2017-12-10 9 views
0

Ich versuche, die Stunden und Minuten vom Benutzer zu bekommen, aber wenn ich eine alphanumerische Zahl eingeben, die den Bereich überschreitet, den der Benutzer erlaubt hat, gibt der Benutzer einen None-Wert zurück. Ich versuche nur die Nummer vom Benutzer zu bekommen. Ich weiß, dass die Lösung offensichtlich ist, aber aus irgendeinem Grund kann ich es nicht herausfinden.Warum gibt Python keine zurück?

def get_hours(): 
     h = input("Hour:") 
     try: 
       if len(h) == 0: 
         return 0 
       else: 
         h = int(h) 
         if 0 <= h <= 24: 
           print(h) 
           print(type(h)) 
           return h 
         else: 
           print("Enter Hours between 0 and 24") 
           get_hours() 
     except ValueError: 
       print("Enter Hour example = 16") 
       get_hours() 

def get_mins(): 
     m = input("Minutes:") 
     try: 
       if len(m) == 0: 
         return 0 
       else: 
         m = int(m) 
         if 0 <= m <= 60: 
           print(m) 
           print(type(m)) 
           return m 
         else: 
           print("Enter minutes between 0 and 60") 
           get_mins() 

     except ValueError: 
       print("Enter Minutes example = 23") 
       get_mins() 

def get_activity(): 
    flag = True 
    while flag: 
     ui = input("Enter a brief summary of what you will be doing? \n:") 
     if len(ui) == 0: 
      flag = True 
     else: 
      return ui 

def main(): 
    data = [] 
    time = [] 
    activity = [] 
    hour = get_hours() 
    print(type(hour)) 
    print("Hours: " +str(hour)) 
    while hour == None: 
      hour = get_hours() 

    mins = get_mins() 
    print(type(mins)) 
    print("Mins: " + str(mins)) 
    while mins == None: 
      mins = get_mins() 
main() 

Dies ist, was ich will:

Hours: 10 

Minutes: 53 

Dies ist, was ich bekommen, wenn die folgenden Eingänge enterd sind

Hour:1a 

Enter Hour example = 16 

Hour:231 

Enter Hours between 0 and 24 

Hour:2 

2 

<class 'int'> 

<class 'NoneType'> 

Hours: None 

Hour:2a 

Enter Hour example = 16 

Hour:2 

2 

<class 'int'> 

Hour:2a 

Enter Hour example = 16 

Hour:2 

2 

<class 'int'> 

Hour:2 

2 

<class 'int'> 

Minutes:2a 

Enter Minutes example = 23 

Minutes:222 

Enter minutes between 0 and 60 

Minutes:2a 

Enter Minutes example = 23 

Minutes:2 

2 

<class 'int'> 

<class 'NoneType'> 

Mins: None 

Minutes:2 

2 

<class 'int'> 

Antwort

1

Alle Pfade zu einer return Aussage Ihrer eigenen führen brauchen damit du nicht None bekommst.

Zum Beispiel haben Sie hier keinen Wert zurückgegeben.

Vorschlag: Verwenden Sie eine richtige Schleife, keine Rekursion, aber wenn Sie dies tun, sollten Sie das rekursive Ergebnis zurückgeben.

else: 
    print("Enter Hours between 0 and 24") 
    return get_hours() # this is explicit 
Verwandte Themen