soc*_*pet 0 python logic python-2.7
所以我使用了下面的代码并且它继续评估为False,但它是True.作为一个Python 2.7菜鸟,我不知道为什么.
s = 'Z_15'
if s.startswith('Z_') & int(s[2:]) >= 15:
new_format = True
else:
new_format = False
print new_format
Run Code Online (Sandbox Code Playgroud)
还有这种变化:
s = 'Z_15'
sYr = int(s[2:])
if s.startswith('Z_') & sYr >= 15:
new_format = True
else:
new_format = False
print new_format
Run Code Online (Sandbox Code Playgroud)
我已经评估了连接的两个部分,并且它们评估为True,因此不确定我做错了什么.
&是按位运算符,它具有比普通逻辑运算符更高的优先级.所以,你的表达式被解析为:
if (s.startswith('Z_') & int(s[2:])) >= 15:
Run Code Online (Sandbox Code Playgroud)
哪个(在这种情况下)是:
if (True & 15) >= 15:
Run Code Online (Sandbox Code Playgroud)
这简化为:
if 1 >= 15:
Run Code Online (Sandbox Code Playgroud)
这是一个明显错误的情况.
要解决此问题,请使用and具有逻辑and且具有正确优先级的运算符.