La mission est:
Votre tâche consiste à corriger les erreurs dans le texte numérisé. Vous n'avez qu'à gérer les erreurs suivantes:
- S est mal interprété comme 5
- O est mal interprété comme 0
- Je suis mal interprété comme 1
Mon code:
def correct(string):
for i in string:
if '5' in string:
string = string.replace('5','S')
elif '0' in string:
string = string.replace('0','O')
elif '1' in string:
string = string.replace('1','I')
return string
Je sais que cette solution ne fonctionnera pas pour un mot comme:
Test.assert_equals(correct("51NGAP0RE"),"SINGAPORE");
Quelqu'un a-t-il des conseils pour en faire une fonction plus générale qui fonctionnera pour chaque mot?
4 réponses
N'utilisez pas elif
, car cela ne fait un test que si le précédent a échoué. Changez-les tous en if
ordinaire et le code fonctionnera correctement.
Mais comme mentionné dans les commentaires, aucun test n'est nécessaire. Si la lettre n'est pas dans la chaîne, replace()
renverra simplement la chaîne d'origine, donc il n'y a aucun mal.
string = string.replace('5', 'S').replace('0', 'O').replace('1', 'I')
Pourquoi n'utilisez-vous pas str.maketrans
et str.translate
:
>>> "51NGAP0RE".translate(str.maketrans('501', 'SOI'))
'SINGAPORE'
Enveloppé dans une fonction:
def correct(s):
return s.translate(str.maketrans('501', 'SOI'))
Voici une autre méthode utilisant la compréhension de liste:
def correct(str_, replacements = {'5': 'S', '0': 'O', '1': 'I'}):
return "".join(replacements.get(c, c) for c in str_)
print(correct("51NGAP0RE"))
#'SINGAPORE'
Vous pouvez utiliser str.replace
directement.
def correct(string):
return string.replace('5','S').replace('0','O').replace('1','I')
Questions connexes
Questions liées
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.