无法逃脱while循环,Python 2.7

时间:2016-03-28 15:05:37

标签: python for-loop while-loop

由于某种原因,我无法在循环中逃脱,我尝试调试它,看起来像循环是不受影响的,我不明白为什么。 (它是我的tictactoe游戏代码的一小部分)

users_main = []
computers_main = []
while True:
    computers_storage = []
    users_storage = []
    if 0==0:
        condition = True
        while condition:
            guess_y = int(raw_input('Enter coordinate y:')) -1
            guess_x = int(raw_input('Enter coordinate x:')) -1
            users_storage.append(guess_y)
            users_storage.append(guess_x)
            users_main.append(users_storage)
            for a in computers_main:
                if a == users_storage:
                    del users_storage[-2]
                    del users_main[-1]
                    condition = True
                    break
                else:
                    condition = False
                    break
break

5 个答案:

答案 0 :(得分:1)

if 0 == 0 

永远不会是不真实的

while True:

虽然 是什么?

答案 1 :(得分:1)

users_main = []
computers_main = []
while True:
    computers_storage = []
    users_storage = []
    if 0==0:
        condition = True
        while condition:
            guess_y = int(raw_input('Enter coordinate y:')) -1
            guess_x = int(raw_input('Enter coordinate x:')) -1
            users_storage.append(guess_y)
            users_storage.append(guess_x)
            users_main.append(users_storage)
            for a in computers_main:
                if a == users_storage:
                    del users_storage[-2]
                    del users_main[-1]
                    condition = True
                    break  # RIGHT HERE
                else:
                    condition = False
                    break  # AND HERE

我在这里标记的地方#34;就在这里#34;和"以及",您只是转义内循环,而不是转义while True循环或while condition循环。 另外,我已经注意到您的代码中有些奇怪的东西可能并非预期:

if 0==0:
    condition = True
    while condition:

该代码仅相当于使用while True:

此外,int(raw_input())可以替换为input()

答案 2 :(得分:0)

computers_main 中包含值时,您只中断,因为您没有存储任何值,行:

for a in computers_main:

不会迭代任何内容,因为列表为空。因此,永远不会到达 for loop 中的中断。

答案 3 :(得分:0)

while(条件)循环的条件保持 True

computers_main 列表保持为空,因此

中的代码
  

for a computers_main:

永远不会输入

循环,因此永远不会更改条件(保持 True )。

答案 4 :(得分:0)

代码的第19行或第21行的'break'语句只会终止嵌套的while循环,而是保留外循环。所以外循环,这是一个无限循环

while True:
即使嵌套循环在每次迭代中终止,

仍继续运行。因此,添加另一个条件来终止外部while循环。您可以使用另一个break语句:

while True:
    computers_storage = []
    ...
    if 0==0:
        while condition:
                ...
                ...
                condition = True
                break 
            else:
                condition = False
                break  
         break