2016-04-14 7 views
1
def confirm_choice(): 
    confirm = input("[c]Confirm or [v]Void: ") 
    if confirm != 'c' and confirm != 'v': 
     print("\n Invalid Option. Please Enter a Valid Option.") 
     confirm_choice() 
    print (confirm) 
    return confirm 

Wenn eine ungültige Eingabe beispielsweise eingegebene wurde der Buchstabe ‚k‘, gefolgt von einer gültigen Eingabe ‚c‘, würde die Funktion beiden Eingänge ‚c‘ drucken und ‚k‘Erstellen eine Bestätigungsfunktion in Python

Ausgang:

c 
k 

Wie kann das obige Programm geändert werden, so dass es nur so oder ‚c‘ oder ‚gibt v'and die Funktion wiederholt, wenn die Eingabe ungültig ist.

+3

Mögliche Duplikat [? Wie kann ich versuchen, verwenden .. außer oder if ... else Benutzereingaben zu validieren] (http://stackoverflow.com/questions/5557937/how-do-i-use-try-exclusive-oder-wenn-noch-zu-validieren-user-input) – jeremycg

Antwort

3

Sie haben vergessen, nach rekursiv zurückzukehren confirm_choice() aufrufen und so fällt es aus dem if-Block und führt

print (confirm) 
return confirm 

, die die erste ungültige Eingabe gedruckt wird.

def confirm_choice(): 
    confirm = input("[c]Confirm or [v]Void: ") 
    if confirm != 'c' and confirm != 'v': 
     print("\n Invalid Option. Please Enter a Valid Option.") 
     return confirm_choice() 
    print (confirm) 
    return confirm 

sollte sich richtig verhalten.

3

Rekursion ist nicht notwendig; es ist einfacher, eine while Schleife für diesen Einsatz:

while True: 
    confirm = input('[c]Confirm or [v]Void: ') 
    if confirm in ('c', 'v'): 
     return confirm 
    else: 
     print("\n Invalid Option. Please Enter a Valid Option.") 
Verwandte Themen