'soir les amis,
Je suis en train de suivre un guide sur Developpez.com, de TutoSwinnen, et je prend mon temps à refaire chaque exo depuis le début pour m'assurer que je ne perd rien de la progression, et là je suis bloqué, au chapitre 6, sur les fonctions prédéfinies.
L'exercice en question consiste à demander 3 valeurs à l'utilisateur, pour en faire une liste, puis déterminer quelle-est la valeur la plus grande, et sa place dans la liste.
Je me suis appuyé sur l'exemple pour essayer de voir le résultat, donc j'ai copié le code dans mon IDLE, rajouté les 2-3 parenthèses manquantes (je programme en Python 3, ce guide a vraisemblablement été fait pour le 2.X), mais le résultat déconne.
Voici le code de Mr Swinnen :
Et voici le résultat :
Ce script recherche le plus grand de trois nombres
Veuillez entrer trois nombres séparés par des virgules :
1,2,3
Le plus grand de ces nombres est 2
Ce nombre est le troisième de votre liste.
À ce que je vois, il prend les 3 premiers caractères de la chaîne, et non les nombres saisis, donc j'obtiens un résultat erroné.
Alors je me suis dit "pas grave, je peux faire sans aperçu", donc voici mon code, différent:
La partie rouge, c'est là où je suis parti en c*******, et je cherche un moyen de parvenir à mes fins, à savoir l'étape 2
J'ai essayé plusieurs possibilités en jonglant avec "i", lst[i]","max" dans la condition, mais j'ai jamais les bons résultats.
Exemple:
['1', '9', '5']
Le plus grand terme de la liste est le 0
Y aurait-il un moyen de terminer ce programme grâce à une boucle While, et si oui, un pro aurait-il la solution ?
J'espère que j'ai été assez clair, j'ai du mal à expliquer ce que je veux faire ^_^
EDIT : J'ai trouvé le tuto du même auteur pour Python 3, avec un code correct cette fois-ci. Cela-dit, je me pose toujours la même question ^_^
Je suis en train de suivre un guide sur Developpez.com, de TutoSwinnen, et je prend mon temps à refaire chaque exo depuis le début pour m'assurer que je ne perd rien de la progression, et là je suis bloqué, au chapitre 6, sur les fonctions prédéfinies.
L'exercice en question consiste à demander 3 valeurs à l'utilisateur, pour en faire une liste, puis déterminer quelle-est la valeur la plus grande, et sa place dans la liste.
Je me suis appuyé sur l'exemple pour essayer de voir le résultat, donc j'ai copié le code dans mon IDLE, rajouté les 2-3 parenthèses manquantes (je programme en Python 3, ce guide a vraisemblablement été fait pour le 2.X), mais le résultat déconne.
Voici le code de Mr Swinnen :
Code:
print "Ce script recherche le plus grand de trois nombres" print 'Veuillez entrer trois nombres séparés par des virgules : ' # Note : la fonction list() convertit en liste la séquence de données qu'on # lui fournit en argument. L'instruction ci-dessous convertira donc les # données fournies par l'utilisateur en une liste nn : nn = list(input()) max, index = nn[0], 'premier' if nn[1] > max: max = nn[1] index = 'second' if nn[2] > max: max = nn[2] index = 'troisième' print "Le plus grand de ces nombres est", max print "Ce nombre est le", index, "de votre liste."
Ce script recherche le plus grand de trois nombres
Veuillez entrer trois nombres séparés par des virgules :
1,2,3
Le plus grand de ces nombres est 2
Ce nombre est le troisième de votre liste.
À ce que je vois, il prend les 3 premiers caractères de la chaîne, et non les nombres saisis, donc j'obtiens un résultat erroné.
Alors je me suis dit "pas grave, je peux faire sans aperçu", donc voici mon code, différent:
Code:
lst=[] #Liste
i=0 #Compteur
max = 0 #Terme plus grand
#Etape 1 : Le programme demande à l'utilisateur de choisir 3 valeurs
while i < 3: #Boucle
print ("Nombre",i+1,"/3", end='') #Demande les 3 nombre (et les compte)
lst.append(input(" : ")) #Entrée des valeurs
i=i+1 #Complète la boucle
print(lst)
i=0 #Retour à 0
#Etape 2 : Si le terme i de la liste est plus grand que le chiffre précédent,
# alors ce terme i est remplacé par le terme i+1, et le chiffre précédent devient i
#Répéter jusqu'à ce que le terme i ne soit plus supérieur au chiffre précédent.
while int(lst[i]) > int(max):
if int(lst[i])>int(max): #Si la valeur du terme i est plus grand que celle de "max"
max=int(lst[i]) # alors "max" prend la valeur du terme i plus grand que lui
i=i+1
print("Le plus grand terme de la liste est le",i) #Affiche le terme le plus grand
J'ai essayé plusieurs possibilités en jonglant avec "i", lst[i]","max" dans la condition, mais j'ai jamais les bons résultats.
Exemple:
['1', '9', '5']
Le plus grand terme de la liste est le 0
Y aurait-il un moyen de terminer ce programme grâce à une boucle While, et si oui, un pro aurait-il la solution ?
J'espère que j'ai été assez clair, j'ai du mal à expliquer ce que je veux faire ^_^
EDIT : J'ai trouvé le tuto du même auteur pour Python 3, avec un code correct cette fois-ci. Cela-dit, je me pose toujours la même question ^_^
Commentaire