Не понимаю в чем ошибка
Решил написать более сложный калькулятор, на этапе тестирования появилась ошибка, но я не понимаю в чем конкретно проблема, вроде все правильно написал:
mathExample = input('Введи пример: ') # пока нужно вводить выражение через пробел
mathExampleList = mathExample.split() # создание списка из элементов примера
countFirstPriorityOperations = 0 # кол-во действий 1 приоритета(/,*)
countSecondPriorityOperations = 0 # кол-во действий 2 приоритета(+, -)
for i in mathExampleList: # цикл считает кол-во действий
if (i == '+') or (i == '-'):
countSecondPriorityOperations += 1
elif (i == '*') or (i == '/'):
countFirstPriorityOperations += 1
if countFirstPriorityOperations > 0: # если есть умножение или деление
for i in mathExampleList:
if (i == '*') or (i == '/'):
if i == '*':
mathExampleList[mathExampleList.index('*') - 1:mathExampleList.index('*') + 2] = \
float(mathExampleList[mathExampleList.index('*') - 1]) * \
float(mathExampleList[mathExampleList.index('*') + 1]) # замена выражения его результатом
elif i == '/':
mathExampleList[mathExampleList.index('/') - 1:mathExampleList.index('/') + 2] = \
float(mathExampleList[mathExampleList.index('/') - 1]) / \
float(mathExampleList[mathExampleList.index('/') + 1]) # замена выражения его результатом
if countSecondPriorityOperations > 0:
for i in mathExampleList:
if (i == '+') or (i == '-'):
if i == '+':
mathExampleList[mathExampleList.index('+') - 1:mathExampleList.index('+') + 2] = \
float(mathExampleList[mathExampleList.index('+') - 1]) + \
float(mathExampleList[mathExampleList.index('+') + 1]) # замена выражения его результатом
elif i == '-':
mathExampleList[mathExampleList.index('-') - 1:mathExampleList.index('-') + 2] = \
float(mathExampleList[mathExampleList.index('-') - 1]) - \
float(mathExampleList[mathExampleList.index('-') + 1]) # замена выражения его результатом
print(*mathExampleList)
ошибка возникает в строке типа:
mathExampleList[mathExampleList.index('*') - 1:mathExampleList.index('*') + 2] = \
Пример:
Ввод: 2 + 2
Вывод:
Traceback (most recent call last):
File "C:\programming\python\scripts\new\calculator.py", line 29, in <module>
mathExampleList[mathExampleList.index('+') - 1:mathExampleList.index('+') + 2] = \\
TypeError: can only assign an iterable.
Я долго пытался понять, в чем ошибка, но точно так и не понял, возможно из-за того, что я выполнял арифметические операции, когда делал срез, либо из-за того, что использовал метод в срезе, я так и не понял
Ответы (1 шт):
Автор решения: Dazdraperm
→ Ссылка
https://stackoverflow.com/questions/19877524/typeerror-can-only-assign-an-iterable-values-to-list По-моему здесь ответ на твой вопрос, я только что проверил и сделал вот так
mathExampleList[mathExampleList.index('+') - 1:mathExampleList.index('+') + 2] = [\
float(mathExampleList[mathExampleList.index('+') - 1]) + \
float(mathExampleList[mathExampleList.index('+') + 1])]