所以我正在写一个简单的游戏,其中存在这些行:
import random
def Start():
print "STEP1.1" #Print statements for debugging
door1 = random.randint(1,3)
door2 = random.randint(1,3)
door3 = random.randint(1,3)
print "STEP1.2"
while door1 == door2:
door2 == random.randint(1,3)
print "STEP1.3"
while door1 == door3 or door2 == door3:
door3 = random.randint(1,3)
print 'STEP1.4'
此代码旨在为door1
,door2
和door3
随机唯一值介于1和3之间。它会停止在步骤1.3上工作,因为它会打印到步骤1.2然后冻结闪烁的光标(不打印STEP1.3
)这会失败,但
x = 0
while x < 100:
print "HI, IM ",x
x = x + 1
打印所有内容,直到HI I'M 99
然后停止,因此它可以正常工作。
我正在使用Python 2.7。有时候代码会起作用并为每个门提供随机的唯一值,但它也经常崩溃。
答案 0 :(得分:3)
在第一次循环中...... 而door1 == door2: door2 == random.randint(1,3) 您正在使用比较运算符 == 。它应该是 = 。这会导致问题。
答案 1 :(得分:3)
在第一个while循环中,您在步骤1.2之后使用door2 == random.randint(1,3)
。 ==
检查双方是否相等,而=
则为变量赋值。因此,在您的情况下randint
会生成一个随机数并检查相等性,但它不会设置door2
的值。
这可能是一个简单的拼写错误,正确的代码应该是
door2 = random.randint(1,3)
答案 2 :(得分:2)
如果door1等于door2,则检查(使用==),如果door2是范围(1,3)中的随机int。因为这是正确的,你循环到无限。最好使用a =而不是==来为door2分配范围(1,3)中的新随机int。