我知道很多人在break
與if condition: quit == True
在while
和until
循環之間辯論。我聽說break
的一個共同意見是它不是冗長的,它可能導致可怕的代碼結構。雖然我正在爲CS110開發一個項目,但我需要製作一個菜單,直到用戶輸入'Q'
,然後將命令添加到列表中,直到輸入'X'
,然後它纔會執行這些命令。如果該命令以'X'
開頭,則可以執行其他操作,例如播放歌曲,但我不希望對用戶顯而易見。這是我在Python代碼使用`continue`作爲break語句
usrCommands = []
def menu():
global usrCommands
# Take user input
quit = False
while not quit :
print("Please enter a command for the Finch :")
print("\tW - Move Forward")
print("\tS - Move Backward")
print("\tA - Turn Left")
print("\tD - Turn Right")
print("\tX - Execute Commands")
print("\tQ - Quit")
usrIn = input("> ").upper()
print()
# Parse for valid input
contains = False
for letter in 'WSADQ' :
if usrIn.find(letter) != -1:
contains = True
# execute if command is invalid unless the command starts with 'X'
if not((contains and len(usrIn) == 1) or (usrIn.find('X') == 0)):
displayInvalid()
continue
if usrIn == 'Q' :
quit = True
continue
if usrIn != 'X':
usrCommands.append(usrIn)
print(usrCommands)
我的問題是在
if usrIn == 'Q' :
quit = True
continue
塊。在這裏,我的語法與if
的語法相同,但以正常方式終止了while
循環,但不是將其包含在最後,而是與使用break語句具有相同的效果。但是,在這裏您可以很容易地看到quit
現在等於True
。這是否是break
和這樣做的標準方式之間的有效媒介,因爲缺乏更好的單詞?其他項目中是否存在可預見的問題?
它在語義上等同於'break',而添加更多的代碼:我會說它更糟。對'break'沒問題的人會更喜歡'break';不喜歡「休息」的人不喜歡它,因爲跳躍,並且會遇到與「繼續」相同的問題。但是,這是一個意見問題,並可能因此而輕易結束。 – Amadan 2014-10-30 00:49:37
@Amadan,如果它確實關閉,哦。這不是一個重要的問題,只是我對 – Lightfire228 2014-10-30 00:54:30
感到好奇對我來說,在這種情況下,休息似乎是一個更明確的指示,因此更合乎邏輯的選擇。我不認爲有什麼關於休息的混亂。它只會結束循環。但那只是我的個人意見。 – Totem 2014-10-30 00:59:14