2016-04-14 169 views
0

我已經創建了一個函數來要求用戶輸入輸入一天中工作的小時數,整個事情返回正確的,除了如果輸入一個不正確的值,它不會顯示其錯誤信息如果輸入的值小於零,則它會再次輸入。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

好,然後澄清,我怎麼得到錯誤消息「輸入一個介於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