Я пытаюсь создать калькулятор типа Python, который позволяет вводить любое количество цифр, и проверяет, является ли каждое второе «слово» оператором, но сравнивая длину суммы и индекса «Слово», которое он в настоящее время проверяет, чтобы увидеть, должен ли он печатать выходные данные, но это не так, даже если 2 целых числа совпадают.
operators = ["+", "-", "/", "*"]
def doSum(sum):
split = sum.split()
target = len(split)
if split[1] in operators and "=" not in "".join(split):
for WORD in split:
if split.index(WORD) % 2 != 0:
if WORD in operators:
if int(split.index(WORD)) == int(target):
print(eval("".join(split)))
else:
print(target)
print(len(split))
print("-=-=-=-=-=-=-=-=-=-=-=-")
doSum("1 + 2")
doSum("3 + 3")
doSum("8 - 4")
doSum("1 + 3 + 3 - 1")
Проблемные строки - строки 10 - 15.
Я ожидал, что результат будет:
3
6
4
6
Но я получил:
3
3
-=-=-=-=-=-=-=-=-=-=-=-
3
3
-=-=-=-=-=-=-=-=-=-=-=-
3
3
-=-=-=-=-=-=-=-=-=-=-=-
7
7
-=-=-=-=-=-=-=-=-=-=-=-
7
7
-=-=-=-=-=-=-=-=-=-=-=-
7
7
-=-=-=-=-=-=-=-=-=-=-=-
из "блока else", который я использую для отладки
Edit:
Спасибо @chepner за предоставленный ответ в комментарии:
"Ваше условие if никогда не выполняется, потому что индексы split находятся в диапазоне от 0 до len (split) - 1, а target == len (split)."