這個問題有兩個問題:條件的優先級,並完成與兩個可能的條件
- 是存在的條件下優先規則與條件while循環一組特定的?
- 我怎麼能得到兩個滿意的條件之一(即condition_x或condition_y)來完成一個循環?
細節:
爲Python新手,我對面的情況在未來一段時間的循環,一定的條件優先於其他人。
我試圖讓:
- 要求,即「Y」兩個值或「N」
- 但是如果「N」選擇迴歸自定義提示,然後允許值「OK 「
- 並使其以使得無論是輸入‘Y’,在步驟1或‘確定’,在步驟3將完成環路
正在發生的事情是,當進入‘N’的第一個條件是優先並返回聲明:
please enter 'y' or 'n'
時,我希望它是返回:
oh come on, enter 'ok'
代碼:
(我知道使用兩個break
的可能是錯誤的 - 我想不出out如何得到'y'或'ok'來完成循環)
while True:
user_input = raw_input('question? (y/n)')
my_string = 'here is a string '
if len(user_input) == 0:
print 'question? (y/n)'
elif user_input is not 'y' or 'n':
print 'please enter \'y\' or \'n\''
elif user_input is 'n':
print 'oh come on, enter \'ok\''
elif user_input is 'ok':
print my_string + ', ' \
.join(list_var[:-1]), list_var[-1] + '?'
break
else:
print my_string + ', ' \
.join(list_var[:-1]), list_var[-1] + '?'
break
感謝您提供關於布爾邏輯的信息,當輸入'y'(結束循環)或除'y'或'n'以外的任何字母時,我試圖進行建議的更改並且代碼按需要運行。 (它會返回提示輸入'y'或'n'),但輸入'n'然後'ok'時,它不會完成循環,而是返回到'y'或'n'提示符。這個鏈接有代碼和解釋器面板:http://labs.codecademy.com/nlL#:workspace – user1063287 2013-03-20 15:15:22
@ user1063287:我減少你的分支到最低限度;你過於複雜的事情。 – 2013-03-20 15:24:54
在瘦身實現中拋出的提示不會返回自定義提示,而是返回'y/n'提示(http://labs.codecademy.com/nlz#:workspace)。原來的確會返回自定義提示(http://labs.codecademy.com/nlL#:workspace),但是會返回原始提示。在這兩種情況下複製的步驟是輸入'n',然後'確定'。期望的行爲是輸入'y' - >完成循環,而輸入'n'>自定義提示 - >完成循環。 – user1063287 2013-03-20 15:51:40