2016-06-10 7 views
4

Ich verstehe, was die Funktion unten tut, aber ich bekomme nicht ganz die Bedeutung (oder den Unterschied) zwischen True und False.Wahr und falsch in einer Funktion def

Beide Klauseln bewirken, dass das Programm beendet wird; bei Eingabe einer positiven oder negativen Antwort wird die Python-Eingabeaufforderung zurückgegeben. Was ändert sich also intern?

Auch wenn ich zu Design eine solche Funktion selbst, sollte ich True oder False, wenn ich nur das Programm wollte die Aufforderung zu mir zurückzukehren, ohne tatsächlich etwas zu tun?

def ask(prompt, retries = 4, reminder = 'Please try again!'): 
    while True: 
     response = input(prompt) 
     if response in ('y', 'yes'): 
      print('Got y or yes!') 
      return True 
     if response in ('n', 'no', 'nope'): 
      print('Got n or no or nope!') 
      return False 
     retries = retries - 1 
     if retries < 0: 
      raise ValueError('Invalid user response!') 
     print(reminder) 

ask('Do you wanna quit?') 
+1

Es hängt von Ihrer Anwendung ab, wenn Sie die Rückgabe der Funktion woanders weitergeben müssen, dann macht es einen Unterschied, ansonsten können Sie auch einfach return verwenden. – Alessandro

+2

Wenn Sie den zurückgegebenen Wert nicht verwenden, können Sie nur Return verwenden (ohne True oder False) –

+1

Ich würde sagen, dass es andere Rückgabewerte hat, falls Sie den Benutzer etwas anderes fragen möchten: "Wollen Sie das wirklich kaufen? " dann könntest du ein 'if ask '(' Willst du das wirklich kaufen? ')' zum Beispiel – KRONWALLED

Antwort

2

Funktionen werden selten allein verwendet. Die Rückkehr True oder False ist hier, um dem Rest Ihres Programms zu helfen zu bestimmen, was zu tun ist. Zum Beispiel:

if ask('Do you like cheese?'): 
    order_cheese() # Some function you've previously defined 

Allerdings, wenn Ihre Funktion auf die Eingabeaufforderung zurückzukehren soll, können Sie sys.exit() verwenden, um einen Erfolgscode zurückzugeben, die Programme (vs Funktionen) aufrufen können die Vorteile der.

1

Da die Antwort des Benutzers y or n ein von zwei Seiten sein kann, yes or no, y or nope, yes or nope, y or no in beliebiger Reihenfolge, ordnet die Funktion einfach diese Liste von Dichotomien in eine einfachen True oder False. Sie können die Funktion also als Bedingung verwenden, um eine Aktion auszuführen.

if ask('Are you ill?'): 
    print('Go see a physician') 
else: 
    print('Go hiking') 

Ohne die ursprüngliche ausführliche Antwort des Benutzers neu auswerten zu müssen.

Dies ist ganz im Einklang mit der Idee, ein function sicherzustellen, hat nur eine Funktion, die in diesem Fall zu booleanise ist eine Antwort des Benutzers oder einen Fehler aus, wenn die Antwort nach einer Reihe von Studien inkonsistent ist

Verwandte Themen