gpt4 book ai didi

python - 用变量打破循环 - Python

转载 作者:行者123 更新时间:2023-11-28 20:33:14 24 4
gpt4 key购买 nike

我想以更紧凑的形式编写我的循环。当我有这种形式的代码时,一切正常:

a=-1
while a <0:
user_move()
if (nastede[1]==X) and (nastede[2]==X) and (nastede[3]==X):
print("Game Over")
break

print("END")

但是当我尝试使用这种形式的代码时,我的循环并没有中断:

y=(nastede[1] and nastede[2] and nastede[3])

a=-1
while a <0:
user_move()
if y == X:
print("Game Over")
break

print("END")

为什么在第二种情况下我的循环不会因 y 内的 nastede[] 而中断?

更改后(所有代码):

nastede=[" ", " ", " ", " ", " ", " ", " ", " ", " "]
X="X"

def list_global():
global nastede
print(" ",nastede[0],"| ",nastede[1]," | ",nastede[2]," ")
print("---------------")
print(" ",nastede[3],"| ",nastede[4]," | ",nastede[5]," ")
print("---------------")
print(" ",nastede[6],"| ",nastede[7]," | ",nastede[8]," ")

def user_move():
a=-1
while a<0:
move_hum=int(input("Write a number from 1 to 8 ?\n"))
if (nastede[move_hum] != X) and (nastede[move_hum] != O):
nastede[move_hum] = "X"
list_global()
break
else:
print("Write different number")


a=-1
while a <0:
user_move()
if all(map(lambda x: x == X, nastede)):
print("Game Over")
break

print("END")

最佳答案

您的条件 y=(nastede[1] and nastede[2] and nastede[3]) 会将 y 绑定(bind)到 True,并且除非 XTrue,否则也不会像您期望的那样进行评估。

更好用all结合 map:

...
if all(map(lambda x: x == X, nestede))
...

这里有一个 minimal example

编辑:因为 all 检查所有这些代码都会失败,因为你只检查从索引 13,为此使用 slice:

...
if all(map(lambda x: x == X, nestede[1:4]))
...

记住 python 切片不包含尾部 [x,y)

关于python - 用变量打破循环 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51039409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com