gpt4 book ai didi

python - 当我在python的if语句中组合按位和逻辑运算符时,出现语法错误,提示语法无效

转载 作者:行者123 更新时间:2023-12-03 08:19:36 25 4
gpt4 key购买 nike

下面是代码,我希望程序在验证变量状态在0到20之间后显示一些内容。

status = 12
if (status >= 0 & <= 20):
print("something")

最佳答案

是的,这是语法错误。 &and(您应该使用的那个)都期望两个表达式作为操作数,而<= 20不是有效的表达式。

if status >= 0 and status <= 20:

但是,比较运算符经过特殊分析,以允许将比较链接在一起。
0 <= status <= 20

不解析为像 (0 <= status) <= 20这样的嵌套表达式
>>> ast.dump(ast.parse('(0 <= status) <= 20'))
"Module(body=[Expr(value=Compare(left=Compare(left=Num(n=0), ops=[LtE()], comparators=[Name(id='status', ctx=Load())]), ops=[LtE()], comparators=[Num(n=20)]))])"

0 <= (status <= 20)
>>> ast.dump(ast.parse('0 <= (status <= 20)'))
"Module(body=[Expr(value=Compare(left=Num(n=0), ops=[LtE()], comparators=[Compare(left=Name(id='status', ctx=Load()), ops=[LtE()], comparators=[Num(n=20)])]))])"

,但作为包含两个比较操作的单个表达式。
>>> ast.dump(ast.parse('0 <= status <= 20'))
"Module(body=[Expr(value=Compare(left=Num(n=0), ops=[LtE(), LtE()], comparators=[Name(id='status', ctx=Load()), Num(n=20)]))])"

语义几乎与 0 <= status and status <= 20的语义相同,不同之处在于 status仅被评估一次。

通常, x OP1 y OP2 z等效于 x OP1 y and y OP2 z,其中 OP1OP2可以是 ><==!=>=<=isis notinnot in之一。大多数组合的可读性不如测试的明确结合。坚持使用“看起来自然”的组合,例如 x < y <= zx < y == z等。

关于python - 当我在python的if语句中组合按位和逻辑运算符时,出现语法错误,提示语法无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62269223/

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