# Dice Rolling Random Number and Guessing Game
import random
user_choice = 'y'
while user_choice != 'N' or user_choice != 'n':
print(random.randint(1,6))
user_choice = input("Do you want to continue: ")
print("You are exited")
uj5u.com熱心網友回復:
while 條件的邏輯是錯誤的。
您的回圈將永遠運行,因為該字符將始終與建議的字符之一不同。因此 while 條件始終為真,因為兩部分中的至少一個始終為真。
你想要類似的東西
while user_choice != 'N' and user_choice != 'n':
...
如果您想采用更“pythonic”的方式,請在 while 條件中查詢一個集合:
while user_choice not in {'n', 'N'}:
....
除了在“和”條件鏈中單獨查詢每個字符之外,還有許多類似的方法可以使用元組、串列……來表達條件。
uj5u.com熱心網友回復:
就編碼而言,問題已經得到解答,但我想更深入地解釋為什么答案是and操作而不是or.
問題“用戶是否輸入了兩者'n'或'N'? ”可以使用布爾代數表示為
答案 = Not(
'n'或'N'),并且使用 DeMorgan 定理可以將其重寫為答案 = Not(
'n') 和 Not('N')
在您的代碼中,撰寫此代碼的兩種方法中的第一種看起來像
while !(user_choice == 'N' or user_choice == 'n'):
我希望這可以澄清您問題背后的邏輯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/368309.html
標籤:Python
