比赛中获胜的条件不算在内

2024-09-26 22:52:20 发布

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

这是我为一个老虎机类型的游戏编写的代码,其中c和e的获胜条件分别是3个相同的数字和3,6,9/9,6,3。当我运行模拟时,这些获胜条件不会在最后打印变量时显示。我的代码中有什么错误

    TABLE = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    TABLE1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    a=0
    b=0
    c=0
    d=0
    e=0
    for pp in range (100000):


rand1 = random.randint(0,9)
rand2 = random.randint(0,9)
rand3 = random.randint(0,9)

word1 = TABLE[rand1]
word2 = TABLE[rand2]
word3 = TABLE1[rand3]

print(word1, word2, word3)
if word1 > 8 or word2 > 8 or word3 > 8:
    a +=1
elif word1 == word2 or word1 == word3 or word2 == word3:
    b +=1
elif word1 == word2 and word2 == word3:
    c +=1
elif word1 <8 and word2 == word1 + 1 and word3 == word2 + 1:
    d +=1
elif word1 == 3 and word2 == 6 and word3 == 9 or word1 == 9 and word2 == 6 and word3 == 3:
    e +=1

打印(a、b、c、d、e)


Tags: orand代码tablerandom条件randintelif
1条回答
网友
1楼 · 发布于 2024-09-26 22:52:20

您构建if语句的方式导致无法访问某些语句。我将详细说明为什么会出现这种情况

运行此代码时,永远不会满足条件C和E。让我们从C开始,C的条件是word1 == word2 and word2 == word3。因为它位于具有检查word1 == word2 or ...的条件B之后,所以条件C永远不会触发

对于条件E,也存在类似的问题,在这种情况下,它与条件a冲突。如果任何单词大于8,则该条件 word1 > 8 or word2 > 8 or word3 > 8将等于True,给定您的表,该值只能是数字9。这与条件E冲突,因为它具有以下检查... and word3 == 9 ...。这意味着,在检查E之前,A始终为真,因为如果其中任何一个单词为9,则条件A为真

解决方案。
在这种情况下,可以对条件进行重新排序以获得所需的输出

    if (word1 == 3 and word2 == 6 and word3 == 9) or (word1 == 9 and word2 == 6 and word3 == 3):
        e += 1
    elif word1 == word2 and word2 == word3:
        c += 1
    elif word1 == word2 or word1 == word3 or word2 == word3:
        b += 1
    elif word1 > 8 or word2 > 8 or word3 > 8:
        a += 1
    elif word1 < 8 and word2 == word1 + 1 and word3 == word2 + 1:
        d += 1

在这种情况下,我只是将条件E和C向上移动,它工作得很好。我将此代码运行了10000000次迭代,这是我的结果。
A=2140416,B=2697247,C=100362,D=69684,E=19912

相关问题 更多 >

    热门问题