2016-09-14 5 views
0

ユーザー入力を検証して、数値(float)と範囲(0-1)の両方であるかどうかを確認しようとしています。私はそれがその数値場合と内の両方をチェックすることはできませんが(山車が受理されている)。これは、入力が数値であるかどうかをチェックするために働くユーザ入力が浮動小数点であり、Pythonで指定された範囲であるかどうかを検証する方法は?

while True: 
    try: 
     rate=input(": ") 
     rate=float(rate) 
     break 
    except ValueError: 
     print("That was not a valid numerical value, please try again") 

:私は以下のように入力がフロートであるかどうかを確認する以外にトライを使用していました範囲(0,1)これは私のメインコードにレートを返す必要があります。

入力が範囲内にあるかどうかを検証できます。たとえば、ユーザーが3.8を入力したときにエラーメッセージが表示され、次のように入力し直すことができます。次に、コードをクラッシュさせない文字列を入力します。

+0

*「ユーザーが3.8を入力した場合、彼らが取得し、エラーメッセージが表示され、再入力をすることができます」現在、*、そのISN:

別のアプローチは、すでに独自に調達するValueErrorをcatched使用することですあなたが提供したコードで起こっていることはありません。 –

+0

@ジム私は彼らがそれを知っていると思う....完全な文章を読む* "私はちょうどユーザーが3.8を入力し、エラーメッセージを表示し、文字列を入力するとコードがクラッシュすることはありません。 "* –

答えて

3

あなたは次のようにtry-except-elseの使用を検討することができます

min_val = 1 
max_val = 10 
while True: 
    rate = input(": ") 
    try: 
     rate = float(rate) 
    except ValueError: 
     print("That was not a valid numerical value, please try again") 
    else: 
     if min_val < rate < max_val: 
      break 
     else: 
      print("This number is not in the required range") 

これは範囲min_val < rate < max_valで番号を入力することが必要になります。 elseブロックは、exceptionが生成されていない場合にのみ実行されます。

min_val = 1 
max_val = 10 
while True: 
    rate = input(": ") 
    try: 
     rate = float(rate) 
     if not min_val < rate < max_val: 
      raise ValueError 
    except ValueError: 
     print("That was not a valid numerical value, please try again") 
    else: 
     break 
関連する問題