Python 与if语句的逻辑相混淆

Python 与if语句的逻辑相混淆,python,if-statement,conditional,Python,If Statement,Conditional,出于某种原因,无论我给right或left的值是多少(例如,如果我将right设置为10,left设置为2)。。。它总是会出现“执行任务1”的情况……有人知道为什么吗?这应该可以解决问题;您的if条件中存在一些问题,仅此而已 right = 0 left = 0 if(left > right or (left and right) == 0): print 'doing task 1' else: print 'doing task2' 这应该会奏效;您的if条件中存

出于某种原因,无论我给right或left的值是多少(例如,如果我将right设置为10,left设置为2)。。。它总是会出现“执行任务1”的情况……有人知道为什么吗?

这应该可以解决问题;您的
if
条件中存在一些问题,仅此而已

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

这应该会奏效;您的
if
条件中存在一些问题,仅此而已

right = 0 
left = 0
if(left > right or (left and right) == 0):
    print 'doing task 1'
else:
    print 'doing task2'
我假设你想让任务1出现,如果左边的一个大于右边,或者右边和左边都等于零

如果你这样做

right = 2
left = 1
if(left > right or (right == 0 and left == 0)):
    print 'doing task 1'
else:
    print 'doing task2'
它是在做一个布尔比较,而不是将左和右的每一个都比较为零

请参见python文档中的布尔运算:

第5.2节截至撰写时

我假设你想让任务1出现,如果左边的一个大于右边,或者右边和左边都等于零

如果你这样做

right = 2
left = 1
if(left > right or (right == 0 and left == 0)):
    print 'doing task 1'
else:
    print 'doing task2'
它是在做一个布尔比较,而不是将左和右的每一个都比较为零

请参见python文档中的布尔运算:


第5.2节在撰写本文时,我建议您使用
elif
功能

(left and right) == 0

我建议您使用
elif
功能

(left and right) == 0
你可能想要

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'
如果right
可以写成

if right < left or 0 == left and 0 == right:
    print('doing task 1')
else:
    print('doing task 2')
print('正在执行任务%d'
%(如果右<左或0==左,0==右,则为1,否则为2))
您可能需要

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'
如果right
可以写成

if right < left or 0 == left and 0 == right:
    print('doing task 1')
else:
    print('doing task 2')
print('正在执行任务%d'
%(如果右<左或0==左,0==右,则为1,否则为2))
已尝试,是否打印“doing task2”:当其中一个变量等于0时,表达式(左侧和右侧)将返回0。并且在任何其他情况下都将始终返回右值。尝试后,是否打印“doing task2”:当其中一个变量等于0时,表达式(左和右)将返回0。并且在任何其他情况下都会返回正确的值。