【问题标题】:Ifs and elifs wont work properly in roulette game - pythonifs 和 elifs 在轮盘游戏中无法正常工作 - python
【发布时间】:2012-07-04 23:37:32
【问题描述】:

好的,我正在制作轮盘游戏。旋转器落在的随机数称为“数字”。这是一个非常基本和简单的代码,但它似乎不适用于我。 目前,您要么选择一个特定的数字,要么选择 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"))

【问题讨论】:

    标签: python random if-statement python-3.x int


    【解决方案1】:

    看看:

    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 是否是选项列表的一部分:

    if int(figure) > 18 and d in ('1-18', '1 - 18', '1- 18', '1 -18'):
    

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

    【讨论】:

    • 谢谢一百万。工作完美。很简单的错误。谢谢
    【解决方案2】:

    问题在于 Python 的想法如下:

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

    布尔运算符的优先级低于比较运算符,因此代码没有按照您的预期执行。相反,末尾的字符串每个都被解释为 or 的操作数,因此被解释为布尔值,在这种情况下始终为 True

    你可以通过以下方式重写它:

    if int(figure) > 18 and d in ['1-18', '1 - 18', '1- 18', '1 -18']
    

    甚至可能从字符串中删除空格,因此您只需要与单个值进行比较:

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

    【讨论】:

    • 请注意,如果d'1 - 1 8',就OP 而言这可能是一个错误,但d.replace 的情况使它成为一个有效的答案。可能不是问题,但值得注意。
    • 确实,是的,正则表达式替换可能是更好的选择,但我必须已经查找此答案的每一个细节,string.replacere.replace 更快找到;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多