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

По какой-то причине, независимо от того, какое значение я даю вправо или влево (например, если я установил право равным 10, а слева равным 2) ... оно всегда выполняет условие "выполнение задачи 1" ..... кто-нибудь знает Почему?

0
pythonuser123 23 Фев 2018 в 00:35

4 ответа

Лучший ответ

Это должно сработать; у вас были проблемы в ваших if условиях, вот и все

if((left > right) or (left == 0 and right==0)):
    print('doing task 1')
else:
    print('doing task2')
0
sacuL 22 Фев 2018 в 21:48

Я рекомендую вам использовать функцию 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'
2
Orhan Solak 22 Фев 2018 в 21:46
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 на момент написания статьи

0
ivan7707 22 Фев 2018 в 21:45

Ты наверное хочешь

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))
0
greybeard 22 Фев 2018 в 21:48