Elif打印错误的消息

2024-06-06 14:44:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我以前也问过类似的问题,只是解决方案似乎不起作用。我正在写一个掷骰子游戏,如果玩家的任何一个数字与计算机的数字匹配,玩家就赢了,并显示一条消息“你赢了”。否则,elif语句表示计算机赢了,它会显示“你输了” 我的问题是,elif语句不会打印“你输了”,而是一直打印“你赢了”

import random

die1 = 0
die2 = 0
die3 = 0
roll1 = 0
roll2 = 0
roll3 = 0

def dice_roll():
    dieroll = random.randint(1, 6)*2
    return dieroll

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

Tags: orfordiceintprintrollelifwas
3条回答

再加上khelwood的答案,如果您喜欢这种语法,可以使用这种方法

从您的代码逻辑来看,当玩家做出至少一个正确猜测时(我不确定这是否是您的意图),玩家似乎会自动获胜

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计算由关键字分隔的每个条件。非null值将始终返回True

因此,如果您使用这种方法

elif die1 or die2 or die3 != roll1 or roll2 or roll3:

die1{}{}{}将始终返回True,这就是导致程序总是打印“youlose”的原因

在for循环中,if语句的参数声明不正确。以下是一个有助于澄清的示例:

a=1
b=3
if a or b == 2:
   print(True)
else:
   print(False)

上例中的if语句将始终打印True,因为您正在询问以下问题:“如果a持有的值为True/大于0,或者如果b等于2:print True”,在您的情况下:

if die1 or die2 or die3 == roll1 or roll2 or roll3

您将参数声明为“如果die1、roll2或roll3有任何True/大于0的值,或者如果die3等于roll1:…”,因此只需将其更改为您希望与之进行比较的实际值,正如Abhigyan Jaiswal的回答所述,它将正常工作

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

相关问题 更多 >