2017-08-18 1 views
0

Je n'étais pas vraiment sûr de savoir comment intituler ma question, mais mon problème est le suivant. J'ai mon programme mis en place pour deviner un nombre et gérer les exceptions. Le programme boucle jusqu'à ce que le nombre soit deviné, mais quand le programme se termine, mon message d'exception montre en même temps. Comment puis-je réparer cela?Quitter le programme sans déclencher la gestion des exceptions

num = None 
while num != 31: 
    try: 
     num = int(input("What is the age of my creator? \n")) 
     if num < 31: 
      print("Higher! Guess again! \n") 
     elif num > 31: 
      print("Lower! Guess again! \n") 
     elif num == 31: 
      print("Good Guess!") 
      exit() 
    except: 
     print("Numbers only! \n") 

Ceci est mon sortie:

Quel est l'âge de mon créateur? Bon Devinez! Numéros seulement!

processus terminé avec le code de sortie 0

Répondre

1

Si vous voulez garder le message d'exception, je recommanderais une break au lieu de exit, pour une sortie plus naturelle de votre programme. Essayez ceci:

try: 
    ... 
    elif num == 31: 
     print("Good Guess!") 
     break 
except ValueError: 
    print("Numbers only! \n") 

En outre, vous devez attraper une erreur spécifique plutôt qu'un fourre-tout except nu.


Si vous voulez faire taire les messages d'erreur, vous devez utiliser pass à la place. A partir de la documentation:

The pass statement does nothing. It can be used when a statement is required syntactically but the program requires no action.

try: 
    ... 
except ValueError: 
    pass 

pass est une déclaration d'espace réservé anodin qui ne fait rien.


+0

je l'ai essayé. Cela ne change rien. C'est ma sortie: Quel est l'âge de mon créateur? Bon Devinez! Numéros seulement! Processus terminé avec le code de sortie 0 –

+0

@OrphaMortimer 1. Aucune déclaration d'impression après le passage. 2. Sauvegardez votre fichier. –

+0

Aussi, je recommande de casser dans 'try', plutôt que de sortir. –