Если введено:
problem = '(123 * 456)'
Когда вы достигнете )
в конце строки, problem[placeCount + 1]
находится за пределами строки.
Вы не делаетеполучить ошибку, когда оператор +
, потому что логические операторы делают ярлыки.Так как problem[placeCount - (numLength + 2)] == "+"
имеет значение true, он никогда не пытается оценить problem[placeCount + 1] == "+"
.
Но когда problem[placeCount - (numLength + 2)] == "+"
имеет значение false, он пытается проверить problem[placeCount + 1]
.Это выходит за пределы строки и выдает ошибку.
Измените тест на:
if problem[placeCount - (numLength + 2)] == "+" or (placeCount < len(problem) - 1 and problem[placeCount + 1] == "+"):
и аналогично для всех других операторов.