Python在While循环中冻结

时间:2017-04-12 12:23:04

标签: python python-2.7 loops while-loop

所以我正在写一个简单的游戏,其中存在这些行:

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'

此代码旨在为door1door2door3随机唯一值介于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。有时候代码会起作用并为每个门提供随机的唯一值,但它也经常崩溃。

3 个答案:

答案 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。