对我的 if 语句的逻辑感到困惑

Confused with logic of my if-statement

right = 0 
left = 0
if(left > right or (left and right) == 0):
    print 'doing task 1'
else:
    print 'doing task2'

出于某种原因,无论我给右边或左边的值是多少(例如,如果我将右边设置为 10,将左边设置为 2)...它始终满足 "doing task 1" 条件... ..有人知道为什么吗?

这应该可以解决问题;你的 if 条件有些问题,就是这样

if((left > right) or (left == 0 and right==0)):
    print('doing task 1')
else:
    print('doing task2')
right = 2
left = 1
if(left > right or (right == 0 and left == 0)):
    print 'doing task 1'
else:
    print 'doing task2'

我假设你打算让任务 1 在左边大于右边,或者右边和左边都等于零时出现。

如果你这样做

(left and right) == 0

它正在进行布尔比较,而不是将左右各与零进行比较。

请参阅 python 文档中的 布尔运算

截至撰写本文时第 5.2 节

我推荐你使用elif函数

right = 0
left = 0
if(left > right):
    print 'doing task 1'
elif left ==0 and right == 0:
    print 'doing task 1'    
else:
    print 'doing task2'

你可能想要

if right < left or 0 == left and 0 == right:
    print('doing task 1')
else:
    print('doing task 2')

可以写成

print('doing task %d'
      % (1 if right < left or 0 == left and 0 == right else 2))