亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Elif 打印錯誤消息

Elif 打印錯誤消息

慕尼黑8549860 2023-12-12 20:30:08
我之前問過類似的問題,但解決方案似乎不起作用。我正在編寫一款擲骰子游戲,如果任何一個玩家的數字與計算機的數字匹配,則玩家獲勝,并打印一條消息“你贏了”。否則,elif 語句意味著計算機獲勝并打印“你輸了”。我的問題是 elif 語句不會打印“你輸了”。它只是不斷打印“你贏了”。import randomdie1 = 0die2 = 0die3 = 0roll1 = 0roll2 = 0roll3 = 0def dice_roll():    dieroll = random.randint(1, 6)*2    return dierollfor die in range(12):    die1 = int(input(f'Choose a number between 2 and 12: '))    die2 = int(input(f'Choose a number between 2 and 12: '))    die3 = int(input(f'Choose a number between 2 and 12: '))    roll1 = dice_roll()    roll2 = dice_roll()    roll3 = dice_roll()    if die1 or die2 or die3 == roll1 or roll2 or 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!')    elif die1 or die2 or die3 != roll1 or roll2 or roll3:        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!')
查看完整描述

4 回答

?
慕容3067478

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 的回答說它會正常工作。


查看完整回答
反對 回復 2023-12-12
?
Smart貓小萌

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).


查看完整回答
反對 回復 2023-12-12
?
一只斗牛犬

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,這就是導致你的程序總是打印“你輸了”的原因


查看完整回答
反對 回復 2023-12-12
?
明月笑刀無情

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!')


查看完整回答
反對 回復 2023-12-12
  • 4 回答
  • 0 關注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號