2016-04-14 10 views
0

Ich habe eine Funktion erstellt, um vom Benutzer Eingaben zu verlangen, um die Anzahl der geleisteten Stunden für einen Tag einzugeben. Das Ganze kehrt zurück, wenn ein falscher Wert eingegeben wird, wird seine Fehlermeldung nicht angezeigt Wenn der eingegebene Wert kleiner als Null von größer als 24 ist, wird nur nach Eingabe gefragt.Python 3 verschachtelt While-Schleife

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

Dies ist eher wie eine Bestätigung als eine Frage. –

+0

Ok dann zu klären, wie bekomme ich die Fehlermeldung "Geben Sie eine Zahl zwischen 0 und 24" – Gunnerlc

+0

@Gunnerlc * "die ganze Sache kehrt zurück" * Sind Sie sicher? Es gibt einige Syntaxfehler im Code. Vielleicht hast du die falsche Version des Codes gepostet? – jDo

Antwort

0

Sie hinzufügen:

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

Prost, die funktioniert, wenn die Nummer unter 0 ist und eine neue Nummer angefordert und die Nachricht angezeigt wurde, aber wenn die Nummer über 24 war, dann zeigte es die Nachricht und ging zum nächsten Tag weiter. – Gunnerlc

+0

Nein, tut es nicht. Überprüfen Sie Ihre Einrückung. Sie können auch einen benutzerdefinierten Fehler erstellen, um IndexError nicht zu verwenden – kameranis