有没有办法测试同一范围内的多个变量(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")
答案 0 :(得分: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)
更快。然而,对于小范围,差异可以忽略不计。
答案 1 :(得分: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)