2017-09-22 6 views
0

Ich versuche, meinen Funktionsaufruf zu stoppen, nachdem ich die Benutzereingabe "exit" ausgeführt habe. Aber das ist nicht gelungen. Unten ist mein Code.Stop Funktionsaufruf

> def ufun(): 
>   while True: 
>     uipt = str(raw_input('Please enter your choice? [y|n]:')) 
>     if uresp == "y": 
>       ufun.uipt = "y" 
>       break 
>     elif uresp == "n": 
>       ufun.uipt = "n" 
>       break 
>     else: 
>       print("Please enter either [y|n]") def anofunc(): 
> 
> def anofunc(): 
>   ulist = str(raw_input('Enter your choice [ALL|AB|BC|EXIT] : ')).upper() 
>   ufun() 
>   if ulist == "ALL": 
>   #execute something 
>   elif ulist == "AB": 
>   #execute something 
>   elif ulist == "BC": 
>   #execute something 
>   elif ulist == "EXIT": 
>   return 
>   else: 
>   print "Please enter a valid option" 
>   anofunc() 
anofunc() 

Also, wenn ich versuche, den Code zu verlassen, während „EXIT“ Benutzereingabe Eingabe aufgefordert, mich für „Bitte geben Sie Ihre Wahl [y | n]:?“, Was ich will nicht beim Beenden. Ich möchte, dass mein Code sofort beendet wird. Bitte helfen Sie mir, wenn ich das tun kann.

Enter your choice [ALL|AB|BC|EXIT] : exit 
Please enter your choice? [y|n]: 
+0

Ihr Aufruf UFUN() direkt nach der ersten Aufforderung .. Das mag sein, warum – ryekayo

+0

@ryekayo das ist vorkommendes Ich möchte, dass diese Funktion nur einmal ausgeführt wird, obwohl ich mehrere Benutzereingaben zur Verfügung stelle: AB | BC –

+0

In diesem Fall würde ich exit() direkt nach Ihrer Bedingung für EXIT hinzufügen. – ryekayo

Antwort

0

Sie sollten den Zustand von EXIT überprüfen, bevor Sie die Funktion ufun() aufrufen. Gerade jetzt, da die Überprüfung danach ist, ruft dies die ufun() -Funktion auf, die den Text 'Bitte geben Sie Ihre Wahl ein?' [y | n]: '.

Auch in Ihrer letzten Bedingung in der ufun() - Funktion, ich denke, Sie versuchen, die anofunc() -Funktion aufzurufen. Dazu müssen Sie einfach anofunc() ohne das def schreiben. Das def wird verwendet, um Funktionsdefinitionen zu definieren.

Sie rufen auch ständig jede Funktion immer wieder auf, was ich nicht denke, was Sie vorhatten. Wenn Sie z. B. etwas anderes als exit eingeben und anschließend EXIT eingeben, geben Sie nach dem Rückruf immer noch die frühere Funktion zurück. Wenn ich nicht falsch liege, versuchen Sie den Benutzer ständig zu fragen, was er tun möchte, bis er exit eingibt.

Eine Möglichkeit, dies zu tun wäre, die while-Schleife auf die anofunc zu bringen() Funktion:

def ufun(): 
    uipt = raw_input('Please enter your choice? [y|n]:') 
    if uipt == "y": 
     ufun.uipt = "y" 
    elif uipt == "n": 
     ufun.uipt = "n" 
    else: 
     print("Please enter either [y|n]") 

def anofunc(): 
    while True: 
     ulist = raw_input('Enter your choice [ALL|AB|BC|EXIT] : ').upper() 
     if ulist == "EXIT": 
      break 
     ufun() 
     if ulist == "ALL": 
      #execute something 
     elif ulist == "AB": 
      #execute something 
     elif ulist == "BC": 
      #execute something 
     else: 
      print("Please enter a valid option") 
anofunc()