对我的 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))
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))