2016-04-14 20 views
0

Kullanıcıdan bir gün boyunca çalışılan saatlerin sayısını girmesini istemek için bir işlev oluşturdum, yanlış bir değer girilirse tüm şey sağa döner, hata mesajını görüntülemez Girilen değer 24'ten büyük sıfırdan küçükse, tekrar giriş için sorar.Python 3 iç içe geçme Döngü

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

Bu daha bir soruya birden bir olumlama gibidir. –

+0

Daha sonra açıklığa kavuşturmak için, "0 ile 24 arasında bir sayı gir" hata mesajını nasıl yazdıracağım – Gunnerlc

+0

@Gunnerlc * "her şey sağa döner" * Emin misiniz? Kodda birkaç sözdizimi hatası var. Belki de kodun yanlış sürümünü gönderdiniz? – jDo

cevap

0

ekleyebilir:

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

, numara 0'ın altındaysa ve yeni bir numara talep edip mesajı görüntülediğinde işe yarayan tezahüratlardır, ancak sayı 24'ün üzerindeyse, mesajı görüntüleyerek bir sonraki güne taşındı. – Gunnerlc

+0

Hayır öyle değil. Girintinizi kontrol edin. Ayrıca, IndexError kullanmamak için özel bir Hata da oluşturabilirsiniz. – kameranis