这是我为一个老虎机类型的游戏编写的代码,其中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)
您构建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为真解决方案。
在这种情况下,可以对条件进行重新排序以获得所需的输出
在这种情况下,我只是将条件E和C向上移动,它工作得很好。我将此代码运行了10000000次迭代,这是我的结果。
A=2140416,B=2697247,C=100362,D=69684,E=19912
相关问题 更多 >
编程相关推荐