Ifs和elifs在轮盘赌游戏python中无法正常工作

2024-05-14 22:40:27 发布

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

好吧,我在玩轮盘赌游戏。微调器降落的随机数称为“数字”。这是一个非常基本和简单的代码,但它似乎不适合我。 现在你要么选择一个特定的数字,要么选择1-18。我试过很多不同的方法,但还是没有成功。这是我的密码。如果有人知道问题出在哪里,请告诉我。谢谢:

numbers = ['1', '2', '3'.......'35', '36']

figure = choice(numbers)

d = textinput("Pick bet", "")

if int(figure) > 18 and d == '1-18' or '1 - 18' or '1- 18' or '1 -18':
    pu()
    goto(100,100)
    write("Loser", font = ("Comic Sans MS", 30, "bold"))

elif int(figure) < 19 and d == '1-18' or '1 - 18' or '1- 18' or '1 -18':
    pu()
    goto(10,100)
    write("Well done", font = ("Comic Sans MS", 30, "bold"))


elif int(d) in range(36) and int(figure) == int(d):
    pu()
    goto(100,100)
    write("Well done", font = ("Comic Sans MS", 30, "bold"))

elif int(d) in range(36) and int(figure) != int(d):
    pu()
    goto(100,100)
    write("Loser", font = ("Comic Sans MS", 30, "bold"))

Tags: orand数字writemsintfigurefont
2条回答

看看:

if int(figure) > 18 and d == '1-18' or '1 - 18' or '1- 18' or '1 -18':

这里有几个语句的结果总是为True;'1 - 18' or '1- 18' or '1 -18'中的每一个都是一个非空字符串。不管int(figure)d有什么值。这意味着python将该行视为if something or True的等价物。在

您要做的是使用in运算符来测试d是否是选项列表的一部分:

^{pr2}$

同样的问题也适用于您的elif语句。在

问题是Python认为:

if (int(figure) > 18 and d == '1-18') or '1 - 18' or '1- 18' ...

布尔运算符的优先级低于比较运算符,因此代码未按预期执行。相反,末尾的字符串被解释为or的操作数,因此被解释为一个布尔值,在本例中始终是True。在

可以按以下方式重写:

^{pr2}$

或者甚至可以从字符串中删除空格,这样您只需要与单个值进行比较:

if int(figure) > 18 and d.replace(' ', '') == '1-18'

相关问题 更多 >

    热门问题