2017-09-22 105 views
0

我試圖在執行「退出」用戶輸入後停止我的函數調用。但未能實現這一目標。 以下是我的代碼。停止函數調用

> 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() 

所以,當我嘗試退出代碼,而進入它問我要「退出」用戶輸入「請輸入您的選擇[Y | N]:」我不退出的同時要。我想我的代碼立即退出。 如果我能做到這一點,請幫助我。

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

您的通話ufun()右後的第一次提示..這可能就是爲什麼那發生 – ryekayo

+0

@ryekayo Ya有效,我希望該功能只能執行一次,即使我提供了多個用戶輸入,如:AB | BC –

+0

在這種情況下,我會在EXIT的條件之後添加exit()。 – ryekayo

回答

0

在調用ufun()函數之前,應檢查EXIT的條件。現在,由於檢查之後,這會調用ufun()函數,該函數顯示文本'請輸入您的選擇? [Y | N]:」。

此外,在ufun()函數的最後一個條件中,我認爲您正在嘗試調用anofunc()函數。爲此,您只需編寫不帶def的anofunc()。 def用於定義函數定義。

你也在不斷地調用每個函數,我認爲這不是你想要做的。例如,如果您鍵入的是退出以外的內容,然後鍵入EXIT,則在返回調用之後,您仍然會返回早期函數。如果我沒有錯,你試圖不斷地詢問用戶想要做什麼,直到他們輸入退出。要做到這一點

的一種方法是使while循環anofunc()函數:

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()