[Debutant] Problème avec l'instruction "break"
Bonjour à tous,
dans un script que j'ai écrit, je suis suis surpris par l'endroit où me renvoit l'instruction break. Je m'explique:
le break récalcitrant se trouve à la ligne 32. Lorsqu'il est parcouru, je m'attends à ce que la fonction consult() prenne fin et que le programme se termine alors. Or il reprend à la ligne 43.
J'ai placé des "balises" dans mon script pour tenter de vous expliquer plus clairement. Pour résumer, une fois que les fonctions ont été lues par le programme et qu'on se retrouve à Endroit 1, le programme termine la fonction et passe par Endroit 2 (ce qui est normal). Mais au lieu de se terminer, il "saute" à Endroit 4, ce que je m'explique pas.
Ma version de Python est la 2.6.6 et voici mon script:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| # -*- coding: cp1252 -*-
#Programme qui demande à l'utilisateur d'entrer des données ou de le consulter
def rempl():
#Complète un dictionnaire contentant "nom" (comme clé),
#"age" et "taille" (comme valeurs)".
while 1:
nom = raw_input('Entrez votre nom : ').capitalize()
age = int(raw_input('Quel est votre âge? '))
taille = float(raw_input('Quelle est votre taille (en m)? '))
dico[nom] = (age, taille) #"age" et "taille" forment un tuple
rep=raw_input('\nPour encoder un autre utilisateur, appuyez sur "e", \n\
pour consulter les données, appuyez sur "c",\n pour quitter, appuyez sur "q" : ')
if rep=='c':
consult()
if rep=='q':
break
def consult():
#Consulte les données dans le dictionnaire;
#il est demandé à l'utilisateur d'entrer un nom.
nom = raw_input('Veuillez entrer le nom d\'une personne : ').capitalize()
while 1:
tupl = dico.get(nom,0) #Extrait les variables "age" et "taille"
#en tant que tuple
if tupl==0: #Ce qui se passe si le nom n'a pas été trouvé
#dans le dictionnaire
nom = raw_input('Nom introuvable. Veuillez entrer un autre nom ou \
appuyez sur <Entrée> pour quitter : ').capitalize()
if nom=='':
#print 'Endroit 1' #Balise pour expliquer mon problème
break #Voici le "break" récalcitrant
else: #Ce qui se passe si le nom a été trouvé
age = tupl[0]
taille = tupl[1]
print 'Nom: %s - Âge: %s ans - Taille: %s m.' % (nom,age,taille)
ini()
#print 'Endroit 2' #Balise pour expliquer mon problème
def ini():
#Propose à l'utilsateur d'encoder des données,de les consulter ou de quitter
#print 'Endroit 3' #Balise pour expliquer mon problème
while 1:
#print 'Endroit 4'
choix = raw_input('\nPour encoder des renseignements, appuez sur "e";\n\
Pour consulter des données, apuuyez sur "c";\n\
Pour quitter, appuyer n\'importe quelle autre touche : ')
if choix=='e':
rempl()
elif choix=='c':
consult()
else:
break
#Corps principal
dico={} #Création d'un dictionnaire
ini() |
Je vous remercie d'avance pour l'aide apportée!
Ps: j'ai écrit ce script d'après un exercice (le 10.45) du tutoriel écrit par G. Swinnen.