我以前也问过类似的问题,只是解决方案似乎不起作用。我正在写一个掷骰子游戏,如果玩家的任何一个数字与计算机的数字匹配,玩家就赢了,并显示一条消息“你赢了”。否则,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!')
再加上khelwood的答案,如果您喜欢这种语法,可以使用这种方法
从您的代码逻辑来看,当玩家做出至少一个正确猜测时(我不确定这是否是您的意图),玩家似乎会自动获胜
Python计算由关键字分隔的每个条件。非null值将始终返回True
因此,如果您使用这种方法
die1
{在for循环中,if语句的参数声明不正确。以下是一个有助于澄清的示例:
上例中的if语句将始终打印True,因为您正在询问以下问题:“如果a持有的值为True/大于0,或者如果b等于2:print True”,在您的情况下:
您将参数声明为“如果die1、roll2或roll3有任何True/大于0的值,或者如果die3等于roll1:…”,因此只需将其更改为您希望与之进行比较的实际值,正如Abhigyan Jaiswal的回答所述,它将正常工作
相关问题 更多 >
编程相关推荐