[英]How to break a loop when inputting unspecified raw_input?
我想用while循環和raw_input編寫一個接口。
我的代碼看起來像這樣:
while True:
n = raw_input("'p' = pause, 'u' = unpause, 'p' = play 's' = stop, 'q' = quit)
if n.strip() == 'p':
mp3.pause()
if n.strip() == 'u':
mp3.unpause()
if n.strip() == 'p':
mp3.play()
if n.strip() == 's':
mp3.stop()
if n.strip() == 'q':
break
但是如果輸入raw_input中未指定的內容,我希望它能夠中斷。
if not raw_input:
break
返回和IndentationError:unindent與任何外部縮進級別都不匹配。
if not raw_input:
break
不返回任何錯誤但不能按我的意願工作。 據我所知,它什么都不做。
另外,如果有更清晰的方式來編寫循環,我很樂意聽到它。
我認為你可以使用dict來保持所有功能是一種更清潔的方式。
func_dict = {
'pause': mp3.pause,
'unpause': mp3.unpause,
'play': mp3.play,
'stop': mp3.stop,
}
while True:
n = raw_input("'p' = pause, 'u' = unpause, 'p' = play 's' = stop, 'q' = quit")
if n.strip() in func_dict.keys():
func_dict[n]()
else:
break
您收到縮進錯誤,因為您沒有結束雙引號。
n = raw_input("'p' = pause, 'u' = unpause, 'p' = play 's' = stop, 'q' = quit")
如果你想讓看起來中斷,如果有任何其他值,那么將所有條件都放入elif語句中,並將最后一個包含在其他內容中。 另外,我只是將lower和strip放到raw_input語句的末尾。
while True:
n = raw_input("'p' = pause, 'u' = unpause, 'pl' = play 's' = stop, 'q' = quit").strip().lower()
if n == 'p':
mp3.pause()
elif n == 'u':
mp3.unpause()
elif n == 'pl':
mp3.play()
elif n == 's':
mp3.stop()
elif n == 'q':
break
else:
break
您還可以將所有有效的答案選項放入字典中,但看起來您應該從簡單的解決方案開始,以了解流程。 你也用ap來播放和暫停。 你會想要使用一個獨特的值來區分,所以我添加'pl'來玩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.