2016-11-29 3 views
0

J'ai un peu de mal avec mon casier de mot de passe persistant python3. Il stocke et récupère les mots de passe comme prévu/désiré, mais j'ai décidé d'insérer une vérification de "retrait" de sorte que si l'information est entrée incorrectement, vous pouvez revenir en arrière et l'entrer de nouveau. Il semble que ce soit la raison pour laquelle il n'y a pas de raison facilement identifiable. Lorsque j'exécute ce code, il rend les modifications persistantes, quelle que soit la variable corr. Ce n'est pas ce que je veux. J'ai essayé d'énoncer explicitement dans une déclaration elif les options non et il a également ignoré celles-ci. Est-ce que les multiples énoncés «ou» le rejettent ou y a-t-il quelque chose d'autre dont je devrais être au courant?Python3 Skipping Flow Check

+1

'si corr == 'oui' ou ' y 'ou' y'' - c'est la même chose que 'if (corr == 'yes') ou 'y' ou 'y':' try 'si corr dans ('oui', 'y'):' – tdelaney

Répondre

1

Cette ligne ne fait pas ce que vous espériez:

if corr == 'yes' or 'y' or 'y': 

Cela se traduit par « est corr égal à « oui » Ce n'est pas, est la valeur « y » Il est vrai?!?! Faisons cela!" Remarque, il ne vérifie pas que corr est égal à 'y', juste que la chaîne 'y' est Vraie.

La façon longhand serait:

if corr == 'yes' or corr == 'y': 

mais vous pouvez aussi le faire:

if corr in ['yes', 'y', 'Y', 'YES']: 

ou quelque chose de similaire pour couvrir plus d'options

+1

Merci pour l'aide. Cela l'a réparé. Passage de C++ à Python j'ai essayé de raccourcir un multiple || déclaration dans ce code avec des résultats intéressants. Les raccourcis conduisent à des bugs, leçon apprise. –