2014-12-07 126 views
1

我發現其他問題的答案是沒有幫助的程序循環:在Python永遠使某種陳述循環

while 1 == 1: 
    do = raw_input('What would you like to do?') 

在上面的例子中,你可以看到,代碼是爲了使事情永遠循環下去,對例如:

if do == 'x': 
    print 'y' 
elif do == 'z': 
    print 'a' 

所以這個「如果」語句已進行,我希望「的raw_input」再次進行,這樣的人可以進入別的東西和程序再次繼續。 我不想把整個程序放在 而True: program或 while 1!= 2: statement.Just乾淨的語法。 謝謝!

+0

如果你的程序只有這樣做,那麼爲什麼不把整個東西包裝在'while 1 == 1'(又名'while')循環中呢? – 101 2014-12-07 05:53:04

+0

這只是一個示例程序。 – 2014-12-07 05:53:57

+0

如果你想在Python中進行無限循環,通常的方法是使用'while True:'。它比'while 1 == 1:'或1!= 2:'更清晰,這很醜陋。如果你想要一個沒有深度嵌套代碼塊的清晰程序,那麼把程序分解成函數。 – 2014-12-07 07:29:06

回答

2

通常你會這樣做直到滿足某個條件,例如,用戶鍵入q退出;否則它只是一個無限循環,你需要強制退出整個程序。

試試這個邏輯來代替:以上

result = raw_input('What would you like to do? Type q to quit: ') 

while result.lower() != 'q': 
    if result == 'x': 
     print 'y' 
    if result == 'z': 
     print 'a' 
    result = raw_input('What would you like to do? Type q to quit: ') 
print('Quitting. Good bye!') 
0
def user_input(): 

    do = raw_input('What would you like to do?') 

    if do == 'x': 
     print 'y' 
     user_input() 

    elif do == 'z': 
     print 'a' 
     user_input() 

    elif do =='quit': 
     print 'exiting user input' 

    else: 
     user_input() 

user_input() 

使用一些遞歸調用,比while語句少簡潔,但如果你正在尋找避免使用,同時會工作。

+0

是的,它確實避免使用'while',但是有足夠的理由使用遞歸嗎?請記住,Python不會優化尾調用遞歸,並且它有一個遞歸限制,因此應儘可能避免Python中的遞歸。 – 2014-12-07 08:06:58