4 回答

TA貢獻1773條經驗 獲得超3個贊
在 for 循環內部,if 語句的參數聲明不正確。這是一個幫助澄清這一點的示例:
a=1
b=3
if a or b == 2:
print(True)
else:
print(False)
上面示例中的 if 語句將始終打印True,因為您詢問以下問題:“如果a的值是 True/大于 0或如果b等于 2:打印 True” 在您的情況下:
if die1 or die2 or die3 == roll1 or roll2 or roll3
您將參數聲明為“如果 die1、roll2 或 roll3 有任何 True/大于 0 值,或者如果 die3 等于 roll1:...”,因此只需將其更改為您希望它們與 Abhigyan 進行比較的實際值Jaiswal 的回答說它會正常工作。

TA貢獻1911條經驗 獲得超7個贊
如果你想檢查是否有任何die1, die2, die3匹配, roll1, roll2, roll3那么你可以使用:
print(f'Roll # 1 was {roll1}')
print(f'Roll # 2 was {roll2}')
print(f'Roll # 3 was {roll3}')
if {die1, die2, die3} & {roll1, roll2, roll3}:
print('You win. Thanks for playing.')
else:
print('You lose. Thanks for playing.')
這會檢查 的集合{die1, die2, die3}和 的集合是否{roll1, roll2, roll3}有任何共同元素。
另外,順便說一句,random.randint(1, 6)*2這并不等于擲兩個骰子。它是擲骰子,結果加倍;因此所有奇數都被排除,并且概率被展平。如果你想模擬擲兩個骰子,你需要random.randint(1,6) + random.randint(1,6).

TA貢獻1784條經驗 獲得超2個贊
添加到 khelwood 的答案中,如果您喜歡這種語法,可以使用此方法
從你的代碼邏輯來看,當玩家至少做出 1 次正確的猜測時,他們似乎會自動獲勝(我不確定這是否是你的意圖)。
if die1 == roll1 or die2 == roll2 or die3 == roll3:
print(f'Roll # 1 was {roll1}')
print(f'Roll # 2 was {roll2}')
print(f'Roll # 3 was {roll3}')
print(f'You Win! - Thanks for playing!')
else:
print(f'Roll # 1 was {roll1}')
print(f'Roll # 2 was {roll2}')
print(f'Roll # 3 was {roll3}')
print(f'You Lose! - Thanks for playing!')
Python 評估由關鍵字分隔的每個條件。非空值將始終返回 True
因此,如果您正在執行此方法
elif die1 or die2 or die3 != roll1 or roll2 or roll3:
die1 die2 roll2 roll3總是返回 True,這就是導致你的程序總是打印“你輸了”的原因

TA貢獻1828條經驗 獲得超4個贊
#You can do this as well
if die1 == roll1 or die2 == roll2 or die3 == roll3:
print(f'Roll # 1 was {roll1}')
print(f'Roll # 2 was {roll2}')
print(f'Roll # 3 was {roll3}')
print(f'You Win! - Thanks for playing!')
else:
print(f'Roll # 1 was {roll1}')
print(f'Roll # 2 was {roll2}')
print(f'Roll # 3 was {roll3}')
print(f'You Loose! - Thanks for playing!')
添加回答
舉報