Correction python
Résolu
Bonjour,
Je bloque sur un exercice pix. je dois corriger le code suivant pour qu'il fonctionne :
La seule problématique que j'ai identifié avec mon mini niveau c'est qu'il manque la commande print à la fin.
Si quelqu'un pouvait m'aider ce serait sympa pour que je puisse comprendre.
Arcadi
Je bloque sur un exercice pix. je dois corriger le code suivant pour qu'il fonctionne :
La seule problématique que j'ai identifié avec mon mini niveau c'est qu'il manque la commande print à la fin.
indice = "vbpewfdwaz"
lettres = "}_v^yk[~jo"
i = 0
tutu = ''
while i < len(indice):
if ord(indice[i]) < 109:
tutu=tutu+chr(ord(lettres[i])+10)
else:
tutu=tutu+chr(ord(lettres[i])-10)
Si quelqu'un pouvait m'aider ce serait sympa pour que je puisse comprendre.
Arcadi
2 réponses
-
Bonjour,
Vu quei
n'est pas incrémenté, la bouclewhile
va se répéter à l'infini.
Ensuite, je te recommande d'écrire au pluriel tes itérables et au singulier tes itérateurs, e.g.
for element in elements: ...
Par ailleurs, utiliser des indices dans le cas présent n'est pas très python dans l'esprit. Contrairement au langage C, tu peux directement itérer sur les caractères d'une chaîne. Cela t'évitera, par la même occasion, d'oublier d'incrémenteri
:-)
Si tu as besoin d'itérer sur deux itérables simultanément (c'est le cas ici, puisque tu veux avancer surindices
etlettres
simultanément), tu peux utiliser les primitives fournies paritertools
ou natives au python : en l'occurrence, celle qui est adaptée dans ton cas estzip
.
Dans ton cas tu aurais pu écrire quelque chose du genre :
indices = "vbpewfdwaz" lettres = "}_v^yk[~jo" tutu = "" for (indice, lettre) in zip(indices, lettres): if ord(indice) < 109: tutu = tutu + chr(ord(lettre) + 10) else: tutu = tutu + chr(ord(lettre) - 10)
Le programme peut être écrit de manière encore plus concise en utilisant la fonctionstr.join
:
indices = "vbpewfdwaz" lettres = "}_v^yk[~jo" tutu = "".join( chr(ord(lettre) + 10) if ord(indice) < 109 else chr(ord(lettre) - 10) for (indice, lettre) in zip(indices, lettres) )
Bonne chance-
Bonjour, j'ai exactement le même problème, j'ai donc copié la réponse mais elle ne fonctionne pas. j'ai essayé également print "tutu" , enlever les "S" à "lettres" etc etc mais absolument rien ne fonctionne ,sur
repl.it quand je lis ma programmation j'obtiens python3 main.py
HELP !!
Bonjour Belinda,
- Le code ci-dessus marche, je viens de vérifier. Tu peux faire print(tutu) et voir que tut contient bien la chaîne de caractère "silhouette".
- Si le problème persiste, merci d'ouvrir un nouveau fil de discussion, en reportant le code que tu as exécuté et en copiant collant le message d'erreur exact.
- De manière générale, évite d'écrire dans un fil de discussion résolu. Au besoin, donne le lien vers la discussion à laquelle tu fais référence.
Bonne chance
-
-
Bonjour Mamiemando,
Merci beaucoup pour votre réponse. Je vais tout étudier non pas pour seulement faire mais surtout comprendre. Votre réponse complète m'aide beaucoup.
concernant le règles étique de rédaction, cette partie est vraiment celle qui m'a été fournie.
Bien à vous,
Arcadi-
Merci pour ton retour. Par rapport aux conseils de programmation, tu verras avec le temps :-) Tu peux aussi regarder la norme PEP-8 si tu veux te perfectionner.
Bonne continuation
-