2017-08-18 18 views
0

私は自分の質問にどのようにタイトルを付けるかわからなかったが、私の問題はこれです。私のプログラムは、数を推測して例外を処理するように設定されています。番号が推測されるまでプログラムはループしますが、プログラムが終了すると同時に例外メッセージが表示されます。これをどうすれば解決できますか?例外処理をトリガーせずにプログラムを終了

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") 

これが私の出力です:

私の創作者の年齢は? 良い推測! 数字だけ!あなたは例外メッセージを残しておきたい場合は、私はあなたのプログラムから、より自然の出口のために、exitの代わりにbreakをお勧めします0

答えて

1

プロセスは終了コードで終了しました。これを試してみてください:

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

また、あなたはむしろキャッチオール裸exceptよりも、特定のエラーをキャッチする必要があります。


あなたはすべてのエラーメッセージを黙らしたい場合は、代わりにpassを使用する必要があります。ドキュメントから:

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は何もしない無害なプレースホルダ文です。


+0

私はそれを試してみました。それは何も変わりません。これは私の出力です: 私の作成者の年齢は? 良い推測! 数字だけ! プロセスは終了コード0で終了しました。 –

+0

@OrphaMortimer 1.パス後にprintステートメントはありません。 2.ファイルを保存します。 –

+0

また、終了するのではなく、 'try'の中で中断することをお勧めします。 –

関連する問題