簡體   English   中英

如何在輸入未指定的raw_input時中斷循環?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM