Игнорирование условия
Хочу написать программу решения числовых выражений. Начал делать, и пошла какая-то абракадабра, интерпретатор не смотрит на условие "иначе" и тупо пишет только надпись из верхнего условия. Что с этим делать? + 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 шт):
Почитайте еще немного о правилах написания условий.
Надо или так
if lifeNumber not in ('+','-','(',')','*','/',' '):
или уж если угодно так:
if lifeNumber != '+' and lifeNumber != '-' and lifeNumber != '(' .....:
if lifeNumber != '+' or '-' or '(' or ')' or '*' or '/' or ' ':
это условие у вас будет выполняться ВСЕГДА
во-первых '-' будет восприниматься как True, а значит условие всегда будет True и будет выполняться ВСЕГДА
во-вторых даже если бы вы написали
if lifeNumber != '+' or lifeNumber != '-' or ...:
такое условие тоже выполнялось бы ВСЕГДА
покажу на простом примере:
if i != 1 or i != 2:
- если
iне равно 1 или 2 - это условие правдиво - если
iравно 1 и значит оно не равно 2 - это условие опять правдиво - если
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