2016-04-14 13 views
0

私は、1日の作業時間を入力するようにユーザーからの入力を求める機能を作成しました。間違った値が入力された場合はエラーメッセージが表示されません。入力された値が24より大きいゼロより小さい場合は、入力を再度要求します。Python 3ネストされたwhileループ

def hours_for_days(week_no,day): 
    i = -1 
    input_string = "Enter number of hours for week " + str(week_no) + " " + day + ": " 
    while i <0 
    work_time = rawinput(input_string) 
    try: 
     i = int(work_time) 
    except ValueError: 
     print("Enter a number: ") 
    else: 
     while 24 < i 
     work_time = rawinput(input_string) 
     try: 
     i = int(work_time) 
     except ValueError: 
     print("Enter a number: ") 
     else: 
     if i < 0 
      print("Enter a number between 0 and 24") 
     if i > 24 
      print("Enter a number between 0 and 24") 
+0

これは、より多くの質問より肯定のようなものです。 –

+0

[OK]をクリックすると、エラーメッセージ "0から24までの数字を入力してください"が表示されます。 – Gunnerlc

+0

@Gunnerlc * "すべてが正しいです" *確かですか?コードにはかなりの構文エラーがあります。たぶん間違ったバージョンのコードを投稿したでしょうか? – jDo

答えて

0

あなたが追加することができます。

while 1: 
    work_time = rawinput(input_string) 
    try: 
     i = int(work_time) 
     if not (0 <= i <= 24): 
      raise(IndexError) 
     break 
    except ValueError: 
     print("Enter a number: ") 
    except IndexError: 
     print("Number must be between 0 and 24") 
+0

数字が0未満で、新しい番号を要求してメッセージを表示した場合にうまくいった喝采ですが、数字が24を超えるとメッセージを表示して翌日に移動しました。 – Gunnerlc

+0

いいえ、そうではありません。押し込みを確認してください。また、IndexErrorを使用しないカスタムエラーを作成することもできます – kameranis

関連する問題