Disons que j'ai un mot, et je veux seulement afficher les trois premières lettres du mot. Mais les dernières lettres restantes doivent afficher un tiret ou un astérisque, etc.

Par exemple, si nous avons le mot javascript, alors la sortie doit afficher jav-------, pebbles doit s'afficher sous la forme peb----, ou au lieu de python, la sortie devrait afficher pyt---, etc.

Est-ce que str.replace(old, new) ou str.replace(old, new, count) fonctionnerait dans ce cas? Si oui, alors comment?

Voici un exemple que j'ai fait:

>>> p = "kotlin"

>>> p = p.replace(p[3:], "-")

>>> p

'kot-'
>>> 

La sortie souhaitée afficherait kot---, cependant, bien qu'elle affiche les 3 premières lettres du mot, kot- n'affiche qu'un seul tiret à la fin.

Quelle pourrait être une autre façon d'aborder cela?

2
LotusAlice 5 juin 2020 à 00:59

4 réponses

Meilleure réponse

Vous pouvez utiliser la multiplication de chaînes:

dashes = "-" * len(p[3:])
p = p[:3] + dashes
2
Diggy. 4 juin 2020 à 23:04
def display_dashes(string):
    dashed_string = "-"*len(string)
    return string[:3]+dashed_string[:len(dashed_string)-3]
display_dashes("kotlin")
#'kot---'

Ou vous pouvez utiliser la fonction str.ljust () pour résoudre cette ligne

display_dashes = lambda string :string[:3].ljust(len(string),'-')
display_dashes("kotlin")
#'kot---'
0
Krishna Singhal 6 juin 2020 à 04:21
p = "kotlin"
x = 3
p[:x]+'-'*x

Production

'kot---'
1
Chris 4 juin 2020 à 22:00

Vous pouvez faire une boucle for ou même utiliser len (p) pour vérifier le nombre de lettres, soustraire 3 puis placer le nombre de mots après les 3 premiers,

p = "kotlin"
p[:3]+"-"*(len(p)-3)

Production

"kot---"
2
Tiago Oliveira 4 juin 2020 à 22:02