Игнорирование условия

Хочу написать программу решения числовых выражений. Начал делать, и пошла какая-то абракадабра, интерпретатор не смотрит на условие "иначе" и тупо пишет только надпись из верхнего условия. Что с этим делать? + It is number. Вбиваю, например, +, который декларирован как оператор, а он пишет цифра.

numbers = exspression.split (maxsplit = len(exspression))
listNumbers = list(numbers)
print ("Verifycation")
print (listNumbers)
lifeNumber = listNumbers
if lifeNumber != None:
   if lifeNumber != '+' or '-' or '(' or ')' or '*'  or '/' or ' ':
      print("It is number")
   else:
      print ("it is operator")```

Ответы (2 шт):

Автор решения: Sergey Tatarincev

Почитайте еще немного о правилах написания условий.

Надо или так

if lifeNumber not in ('+','-','(',')','*','/',' '):

или уж если угодно так:

if lifeNumber != '+' and lifeNumber != '-' and lifeNumber != '(' .....:
→ Ссылка
Автор решения: Zhihar
if lifeNumber != '+' or '-' or '(' or ')' or '*'  or '/' or ' ':

это условие у вас будет выполняться ВСЕГДА

во-первых '-' будет восприниматься как True, а значит условие всегда будет True и будет выполняться ВСЕГДА

во-вторых даже если бы вы написали

if lifeNumber != '+' or lifeNumber != '-' or ...:

такое условие тоже выполнялось бы ВСЕГДА

покажу на простом примере:

if i != 1 or i != 2:
  1. если i не равно 1 или 2 - это условие правдиво
  2. если i равно 1 и значит оно не равно 2 - это условие опять правдиво
  3. если i равно 2 и значит оно не равно 1 - это условие опять правдиво

т.е. условие выполняется ВСЕГДА

для вашей задачи необходимо было бы использовать вместо or and или же оставить or но тогда вместо != надо было бы использовать ==

но наиболее оптимально использовать оператор in

if lifeNumber in ('+','-','(',')','*','/',' '):':
    print ("it is operator")
else:
    print("It is number")

ну или

if lifeNumber not in ('+','-','(',')','*','/',' '):':
    print("It is number")
else:
    print ("it is operator")

да и для чисел нужны дополнительные проверки - ведь 1e10 - это тоже число :)

в данном случае можно использовать конструкции try except

→ Ссылка