Python - 13.4 Afficher des choix avec une boucle for
Un programme qui affiche chaque choix avec un print() devient vite difficile à modifier. Une boucle for peut au contraire s'adapter au nombre de choix. Cette leçon montre comment l'utiliser, puis comment numéroter les réponses et lire la saisie correctement.
Boucler sur le nombre de choix
Le nombre de choix peut varier, par exemple 4, 5 ou 6 propositions. La fonction len() donne ce nombre, et la boucle for s'appuie dessus.
Ainsi, ajouter un choix ne demande plus de modifier le code d'affichage. La boucle s'adapte automatiquement à la taille de la liste.
for i in range(len(choix)):
print(str(i + 1) + ' : ' + choix[i])
Convertir la réponse en nombre
L'utilisateur saisit un chiffre, mais input() renvoie toujours du texte. Il faut donc convertir la saisie avec int() avant de la comparer.
Les numéros affichés commencent à 1, alors que les index de la liste commencent à 0. Il faut donc retirer 1 à la réponse pour retrouver le bon choix.
reponse = int(input()) - 1
if choix[reponse] == bonne_reponse:
print('bonne réponse')
En résumé
Une boucle for permet d'afficher un nombre variable de choix sans modifier le code. Les numéros commencent à 1 pour l'utilisateur. La réponse saisie doit être convertie en nombre, puis diminuée de 1 pour correspondre à l'index.
Points clés
- range(len(choix)) fait tourner la boucle autant de fois qu'il y a de choix.
- Afficher l'index plus 1 donne une numérotation à partir de 1.
- input() renvoie du texte, qu'il faut convertir avec int().
- Retirer 1 à la réponse permet de retrouver l'index du choix.
- Une saisie hors des limites doit être gérée à part.
Questions fréquentes
Pourquoi les index de la liste commencent-ils à 0 ?
En Python, la première position d'une liste porte l'index 0. Il faut donc ajouter 1 pour afficher le premier choix sous le numéro 1.
Pourquoi la réponse ne fonctionne-t-elle pas sans conversion ?
La saisie est du texte. La comparaison avec un nombre échoue tant qu'on ne la convertit pas en entier avec int().
Que se passe-t-il si l'utilisateur saisit un nombre trop grand ?
Le programme génère une erreur, car cet index n'existe pas dans la liste. La vidéo explique qu'il faut gérer ce cas.