Récuper une valeur dans un dictionnaire
Résolu/Fermé
Cloé
-
Modifié le 19 avril 2017 à 10:03
mamiemando Messages postés 33591 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 mars 2025 - 19 avril 2017 à 10:21
mamiemando Messages postés 33591 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 mars 2025 - 19 avril 2017 à 10:21
A voir également:
- Récuper une valeur dans un dictionnaire
- Télécharger dictionnaire larousse pdf gratuit - Télécharger - Dictionnaires & Langues
- Télécharger dictionnaire médical larousse gratuit pdf - Télécharger - Dictionnaires & Langues
- Télécharger dictionnaire informatique gratuit pdf - Télécharger - Bureautique
- Télécharger dictionnaire français gratuit pdf - Télécharger - Bureautique
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
1 réponse
mamiemando
Messages postés
33591
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 mars 2025
7 834
Modifié le 19 avril 2017 à 10:24
Modifié le 19 avril 2017 à 10:24
Bonjour
Ton erreur vient du fais que quand tu lis la ligne tapée par l'utilisateur, celle-ci contient le retour à la ligne (caractère
Ensuite il y a plusieurs autres erreurs :
- tu as utilisé
- tu as fait des fautes de frappes dans tes variables
- La variable "encore" devrait être un booléen.
Moins gênant, mais à améliorable :
- Tu peux ajouter l'en-tête "#! -*- coding: utf-8 -*-" pour supporter les caractères accentués dans ton code.
- Le dictionnaire n'a pas besoin d'être recréé à chaque tour de boucle.
- Il y a beaucoup de fautes d'orthographe :-/
- Les casts en
- Il faudrait contrôler le cas où l'utilisateur tape un nom de planète non référencé dans ton dictionnaire.
- On pourrait rendre la saisie de l'utilisateur insensible à la casse (minuscule/majuscule).
Bonne chance
Ton erreur vient du fais que quand tu lis la ligne tapée par l'utilisateur, celle-ci contient le retour à la ligne (caractère
\n), qui ne figure pas dans les clés de ton dictionnaire.
(mando@velvet) (~) $ python toto.py
Quel est ton poid sur terre?
30
sur quel planet est tu? Lune, Terre, Venus ou Neptune
Venus
Traceback (most recent call last):
File "toto.py", line 16, in <module>
poid_espace()
File "toto.py", line 11, in poid_espace
poid_cacluler = poid * (planet[planet_choix])/100
KeyError: 'Venus\n'
Ensuite il y a plusieurs autres erreurs :
- tu as utilisé
%Sau lieu de
%s,
- tu as fait des fautes de frappes dans tes variables
- La variable "encore" devrait être un booléen.
Moins gênant, mais à améliorable :
- Tu peux ajouter l'en-tête "#! -*- coding: utf-8 -*-" pour supporter les caractères accentués dans ton code.
- Le dictionnaire n'a pas besoin d'être recréé à chaque tour de boucle.
- Il y a beaucoup de fautes d'orthographe :-/
- Les casts en
strne sont pas utiles.
- Il faudrait contrôler le cas où l'utilisateur tape un nom de planète non référencé dans ton dictionnaire.
- On pourrait rendre la saisie de l'utilisateur insensible à la casse (minuscule/majuscule).
#!/usr/bin/env python #! -*- coding: utf-8 -*- import sys def poids_espace(): planetes = { "lune" : 16.2, "terre" : 100, "venus" : 150, "neptune" : 80 } noms = ", ".join([planete.title() for planete in planetes.keys()]) encore = True while encore == True: print("Quel est ton poids sur Terre?") poids = int(sys.stdin.readline()) print("Sur quelle planète es-tu ? %s" % noms) planete_choix = sys.stdin.readline().strip().lower() try: poids_calcule = poids * (planetes[planete_choix]) / 100 except KeyError: print("Planète inconnue !") continue print ("Ton poids sur %s est de %s" % (planete_choix, poids_calcule)) print("Nouveau calcul ? Oui/Non") encore = bool(sys.stdin.readline().strip().lower() == "oui") poids_espace()
Bonne chance