1

有没有办法测试同一范围内的多个变量(x1,y1,x2,y2 在范围内......)?我希望代码在if

mouv="7647"
x1,y1,x2,y2=int(mouv[0]),int(mouv[1]),int(mouv[2]),int(mouv[3])
if len(mouv)==4 and x1 in range(8) and y1 in range(8) and x2 in range(8) and y2 in range(8):
    print("code ok")
4

2 回答 2

2

这是一种使用方法all

mouv = "7647"
# I cleaned this up too
x1,y1,x2,y2 = map(int, mouv[:4])
if len(mouv)==4 and all(z in range(8) for z in (x1, y1, x2, y2)):
    print("code ok")

请注意,如果您的范围很大,则应使用 Python 的数学运算符:

if len(mouv)==4 and all(-1 < z < 8 for z in (x1, y1, x2, y2)):

对于大范围,使用数学运算符比使用x in range(n). 然而,在小范围内,差异可以忽略不计。

于 2013-11-12T20:18:30.463 回答
2

使用all

if len(muov) == 4 and all(int(x) in range(8) for x in mouv)

或者如果range是巨大的,那么最好使用链式比较运算符range在内存中创建一个列表,并且与简单的数学比较相比很慢:

if len(muov) == 4 and all(0 <= int(x) < 8 for x in mouv)
于 2013-11-12T20:18:39.290 回答