Récuper une valeur dans un dictionnaire
Résolu
Bonjour,
Je me forme au python et je bloque sur le point suivant.
Mon code:
Le problème vient de la ligne
Je récupère le nom est pas la valeur associée. Si vous avez une idée de la syntaxe.
Mercie d'avance
Je me forme au python et je bloque sur le point suivant.
Mon code:
def poid_espace(): encore = 'Oui' while encore =='Oui': print("Quel est ton poid sur terre?") poid = int(sys.stdin.readline()) planet = {'Lune': 16.2, 'Terre': 100, 'Venus': 150,'Neptune':80} print("sur quel planet est tu? Lune, Terre, Venus ou Neptune") planet_choix = str(sys.stdin.readline()) poid_cacluler = poid * (planet[planet_choix])/100 print ('ton poids sur %S est de %S'% (planet_choix, poid_calculer)) print('nouveau calcule? Oui/Non') encore = str(sys.stdin.readline())
Le problème vient de la ligne
poid_cacluler = poid * (planet[planet_choix])/100
Je récupère le nom est pas la valeur associée. Si vous avez une idée de la syntaxe.
Mercie d'avance
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
- Dictionnaire synonyme gratuit - Télécharger - Études & Formations
- Télécharger dictionnaire informatique gratuit pdf - Télécharger - Bureautique
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
1 réponse
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