2016-12-02 49 views
0

我被困在一個簡單的問題上。我試圖要求用戶從列表中選擇所需的功能。這個輸入的用戶字符串將調用所選擇的功能,直到它完成運行。 (這是一個照明序列)。在這個序列結束後,我想詢問用戶他或她是否希望選擇另一個功能。如果是這樣,繼續。如果沒有,退出代碼。是一個While True或If語句最好在執行一個函數之前轉到下一個

我不能決定,如果一段時間真的或如果語句是最好的實現這一點。

這裏是我的代碼:

# random functions 
def rainbow(): 
    print 'rainbow' 
def clover(): 
    print 'clover' 
def foo(): 
    print 'eggs' 

if __name__ == '__main__': 
    # here are some random initializations 
    print 'ctr-c to quit' 
    user_input = input("choose from the following: ") 

    if user_input == 'rainbow': 
     print 'generating' 
     rainbow() 
     rainbow() 
     rainbow() 
     user_input = input('choose another') 
    if user_input == 'foo': 
     clover() 
     clover() 

回答

2

我會建議使用while循環這裏,直到你獲得成功的USER_INPUT,基於此,你會想打破循環。在while看起來,你可以根據需要得到你的if語句。例如,在上面的代碼中,如果用戶鍵入"rainboww"會發生什麼,它基本上只是退出程序。它最好能夠有這樣的:

while True: 
    user_input = input('...') 
    if "good result" 
     break 
    else: 
     continue 
1
while True: 
    user_input = input("choose from the following: ") 
    if user_input == "condition a": 
     do something 
    elif user_input == "condition b": 
     do something.. 
    elif any(user_input == keyword for keyword in ["q", "quit"]): 
     # when meet any quit keyword, use break to terminate the loop 
     break 
    else: 
     # when doesn't find any match, use continue to skip rest statement and goto the beginning of the loop again 
     continue 

,而真正能滿足您的要求。你可以使用if-elif-else子句來完成不同的工作。

+0

非常感謝。我嘗試過實現你的兩個代碼的組合,他們的工作,但我想實現任何函數運行後返回到user_input。這種方式後,有一個選項來輸入一個新的選擇。 –

+0

user_input = input(「從以下選項中選擇」)而True: if user_input =='colorWipe':print'正在生成...'colorWipe(strip,Color(255,0,0))break'''here我想實現一個選項,在執行函數後返回用戶輸入'''elif user_input =='theatreChaseRainbow':print'正在生成...'劇院階段(strip,Color(127,127,127))#白色影院chase break elif any(user_input ==關鍵字['q','quit']中的關鍵字): –

+0

如果要將控制返回到while循環的開始處,請用'continue'替換'break' – haifzhan

相關問題