在尝试减少嵌套的ifs(以及一个停止工作的脚本)时遇到了很多麻烦之后,我意识到也许我对python中布尔值的工作原理和工作原理有错误的认识。在
我有这个(工作正常,但扭曲):
if (not gotside):
if (j > 1):
if (j < a.shape[1] - 1):
if a[i, j+unit]:
print "only now I do stuff!"
并尝试了这个方法(因为没有按预期工作而显得很拘束):
^{pr2}$然后我试着用“or”代替“and”,但是没用,因为(后来我发现)当你使用x and y
甚至x or y
时,你得到的是{
所以,我不知道如何才能一个接一个地进行一些测试(最好是在同一行中,使用布尔运算符),这样当第一个测试的结果为False时,整个表达式就会返回False
。在
谢谢你的阅读!在
你的例子应该有用。在
只有当x、y和z的求值结果都不为
^{pr2}$False
,并且在Python中,and
短路时才会发生,因此一旦一个项目失败,就会返回False
值。我们可以很容易地展示这一点:我明白您的顾虑,但请记住,每当Python中的}在独立完成时返回{},而说{}实际上相当于说{},因此无论布尔逻辑在其他上下文中返回什么,您都将获得条件中使用时逻辑返回的值的假或真值。在
if
语句中有某个内容,它将隐式转换为bool
作为条件。因此,当3 or 2
返回3
和{是的,我同意其他人的说法,你的例子应该按照你的意愿运作。你说得对,[]或{}等)将返回False。如果python真的尝试了这个测试,那么这个测试会引发一个错误。在
x or y
返回x,y中的一个,但是这个对象可以被求值为True或False。{python如何计算如果您的代码没有按预期工作,请详细说明您期望它做什么,以及它实际在做什么。在
相关问题 更多 >
编程相关推荐