Je commence tout juste la programmation en python et je suis rendu au chapitre suivant : la boucle for.
J'ai décide avec le peu de connaissance que j'avais jusque la de créer un mini programme pour m’entraîner et déjà bien maîtriser les bases.
Mais je n'arrive malheureusement pas a faire fonctionner mon programme, si vous pouviez m'aider se serait sympas voici le projet :
Suite au explication sur les boucles je décide de créer un programme qui donne les voyelles, consones a l'utilisateurs pour un mot rentré au préalable.
Sans plus attendre le code :
#mini programme d'entraînement
print("Programme d'apprentissage des voyelles et des consones")
print("Choix 1 : Liste des voyelles")
print("Choix 2 : Liste des consones")
print("Choix 3 : Consone et voyelle dans un mot")
#demande a l'utilisateur de faire un choix
while choix != 1 or choix != 2 or choix != 3: #crée une boucle tant que la condition n'est pas rempli
print("Merci de faire un choix (1 ou 2)")
choix = input("Votre choix : ") #l'utilisateur entre son choix
if choix == 1:
print("La liste des voyelles Française est la suivante")
voyelle = ("AEIOUYaeiouy")
for lettre in voyelle:
print(lettre) #pour afficher les voyelles les unes en dessous des autres
elif choix == 2:
print("La liste des consones Française est la suivante")
consone = ("BCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz")
for lettre in consone:
print(lettre) #même chose pour les consones
elif choix == 3:
mot = input("Ecrire un mot : ")#l'utilisateur rentre un mot
for lettre in mot: #le mot est ensuite décortiqué
if lettre in "AEIOUYaeiouy": #et il affiche les consones et voyelles
print("voyelle")
elif lettre in "BCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz":
print("consone")
else:
print("inconnu")
print("rappel du mot : ", mot)
else:
exit() #je ne suis pas sur que cette commande serve bien a quitter le programme
#si quelqu'un peux me le confirmer
Merci de vos aides futur.
Cordialement.
"Mess with the best die like the rest" - Hackers (1995).
* La commande while vérifiera la valeur de la variable choix. Si cette dernière n'existe pas une erreur sera relever. Du coup il faut l'initialiser avant le début du while
choix = 0
* Tes block de codes sont mal indentés. Il faut que les for soit à l'intérieur des différent if / elif. C'est l'indentation qui délimite les block de code en python, il faut donc qu'il ai un niveau d'indentation supplémentaire.
elif choix == 3:
mot = input("Ecrire un mot : ")mot
for lettre in mot:
if lettre in "AEIOUYaeiouy":
print("voyelle")
elif lettre in "BCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz":
print("consone")
else:
print("inconnu")
* exit ne sert à rien dans ce context. Le programme se terminera de lui même une fois arriver à la fin du fichier. Par contre tu pourrais faire exit(1) en cas d'un mauvais choix au début par exemple. Ça te permettra d'interrompre le programme prématurément. exit prends aussi comme paramètres un chiffre qui sera le code de retour du programme.
J'ai apporté quelques modifications suite a ce que tu ma dit :
#mini programme d'entraînement
print("Programme d'apprentissage des voyelles et des consones")
print("Choix 1 : Liste des voyelles")
print("Choix 2 : Liste des consones")
print("Choix 3 : Consone et voyelle dans un mot")
#demande a l'utilisateur de faire un choix
choix = 0
while choix != 1 or choix != 2 or choix != 3: #crée une boucle tant que la condition n'est pas rempli
print("Merci de faire un choix (1 ou 2)")
choix = input("Votre choix : ") #l'utilisateur entre son choix
if choix == 1:
print("La liste des voyelles Française est la suivante")
voyelle = ("AEIOUYaeiouy")
for lettre in voyelle:
print(lettre) #pour afficher les voyelles les unes en dessous des autres
elif choix == 2:
print("La liste des consones Française est la suivante")
consone = ("BCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz")
for lettre in consone:
print(lettre) #même chose pour les consones
elif choix == 3:
mot = input("Ecrire un mot : ", mot) #l'utilisateur rentre un mot
for lettre in mot: #le mot est ensuite décortiqué
if lettre in "AEIOUYaeiouy": #et il affiche les consones et voyelles
print("voyelle")
elif lettre in "BCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz":
print("consone")
else:
print("inconnu")
print("rappel du mot : ", mot)
else:
exit(1)
J'ai surement du louper quelque chose ...
"* Tes block de codes sont mal indentés. Il faut que les for soit à l'intérieur des différent if / elif. C'est l'indentation qui délimite les block de code en python, il faut donc qu'il ai un niveau d'indentation supplémentaire."
Je pense aussi que mon problème viens de l'indentation mais j'ai du mal a comprendre.
Quand j'écrit ma fonction for je dois la terminer avant de passer au autres choix?
- Edité par Ghøst 6 juillet 2013 à 15:41:20
"Mess with the best die like the rest" - Hackers (1995).
C'est mieux au niveau de l'indentation sauf pour le dernier for. Son contenu n'est pas au bon niveau d'indentation.
Pour sortir d'un block de code python il suffit de revenir d'un block en arrière. Si tu écris n'importe quoi à un niveau d'indentation inférieur, python considèrera que les blocks de code précédent sont finis (c'est implicite).
if <condition>:
# début du block de code
<code>
for <itération>:
# début d'un nouveau block de code
<code>
<code> # cette ligne met implicitement fin au for précédent puis qu'elle est à un niveau d'indentation inférieur au for
if <condition>:
# début du block de code
<code>
for <itération>:
# début d'un nouveau block de code
<code>
<code> # cette ligne met implicitement fin au for ET au if précédent puis qu'elle est à un niveau d'indentation inférieur ou égale aux deux instructions
Le comportement de input n'est pas statisfaisant non plus je te conseil d'utiliser
choix = 0
while choix != 1 or choix != 2 or choix != 3: #crée une boucle tant que la condition n'est pas rempli
print("Merci de faire un choix (1 ou 2)")
choix = choix = int(raw_input())
if choix == 1:
print("La liste des voyelles Française est la suivante")
voyelle = ("AEIOUYaeiouy")
for lettre in voyelle:
print(lettre)
C'est mieu comme sa?
Merci pour ton aide je sais que sa doit être vraiment nul comme problème mais j'ai besoin d'une aide extérieur sur mon problème.
"Mess with the best die like the rest" - Hackers (1995).
Bah après c'est toi qui voit si ça marche quand tu l'exécutes hein ^^. Il n'y a pas de meilleurs façon de vérifier si c'est mieux.
Ça pour le coup, c'est mieux dans ce sens là :
if choix == 1:
print("La liste des voyelles Française est la suivante")
voyelle = ("AEIOUYaeiouy")
for lettre in voyelle:
print(lettre)
Ton for doit rester dans le block if du dessus. En le remettant à un niveau d'indentation 0 (sans indentation quoi) tu le fais sortir du if et il sera exécuté que le if ait été vérifié ou non. Par ailleurs, ça casse l'enchaînement des blocs if / elif ce qui devrait te renvoyer une SyntaxError.
Un autre truc que je viens de voir c'est que la condition de ton while ne marchera jamais (comprendre : la condition sera toujours vraie et tu ne sortiras jamais de ton while). Un truc qui devrait mieux marcher :
while choix != 1 and choix != 2 and choix != 3:
Et la même chose mais en plus lisible :
while choix not in (1, 2, 3):
- Edité par Jaes 6 juillet 2013 à 16:21:27
Un débutant qui a besoin d'un petit coup de pouce
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.