2017-01-19 3 views
1

本質的に私は、このコードをより簡潔にする方法があるのだろうかと思っています。私は本当に質問を正しく行う方法を本当に知っていませんが、書くためやインポートするためのモジュールや表現はありますか?無料の言語でtry/except in whileループの短いバージョンですか?

while True: 
    try: 
     guess = int(input("Enter a number here: ")) 
     break 
    except: 
     print("Please try again.") 

それはおそらく次のようになります。私は、ユーザーの文字列のようなものを入力し、プログラム全体を壊すからエラーを防ぐためにしようとしている

test: 
    dothing("user thing") 
if issues: 
    print("try again") 
    try again 

。これがばかげていると、私はお詫びします。基本的に何年も前にPythonを使い始めてから、もう一度Pythonに取り掛かり始めました。私はおそらく単純なことを忘れています。

あまりにも多くの皆さんありがとうございます。

+2

それは私が推測するように短いです。それを関数に囲み、その関数を呼び出すことができます。 – MYGz

+1

http://stackoverflow.com/questions/23294658/asking-the-user-for-input-until-they-give-a-valid-responseをご覧ください。ユーザーからたくさんの整数を取得する場合は、関数内にコードをラップすることができます。ところで、 "裸の" 'except'を使うのは悪いスタイルだと思いますが、どの例外を捕まえたいのかを明示する必要があります。 FWIW、 'try ... except'は、例外が発生しない場合は同等の' if ... else'コードよりも速いですが、例外が発生した場合は遅くなりますが、ユーザの入力を待っている。 –

+0

これは私が本当に知りたかったものです。両方ともありがとう、私は今から私のコードにキャッチする明示的な例外を暗示しようとします。 – Timmitei

答えて

3

あなた自然言語は私にFortranの4または古い基礎のような古い非構造化言語を覚えている...これらの言語で

、我々はライン参照に行くに使用:

100 CALL INPUTVAL(IVAL, IERR) 
     IF IERR == 0 GOTO 200 
     PRINT 50 
50  FORMAT('ERROR TRY AGAIN') 
     GOTO 100 

200 CONTINUE 

それは可能一見すると自然に見えるが、すぐにスパゲッティコードにつながる。そのため、クリーンなループとストラテジックなエラー処理(例外を除いて試してみる)が発明されました。古いgotoスタイルを後悔せず、標準構造化された構造に従ってください

関連する問題