Почему возникла ошибка IndentationError: expected an indented block?
def Calculator():
while True:
term = Expression.get("1.0", END)
term = term[0:-1]
long_term = len(term)
# Все индексы символов введеных пользователем
index = []
# Проводим проверку ввода пользователя
if long_term > 0:
# Получаем индекс каждого введеного пользователем символа
while long_term > 0:
long_term = long_term - 1
index.insert(0,long_term)
elif long_term == 0:
Expression.insert(END, '\nОшибка! Поле пусто\n')
break
# Все элементы строки введеной пользователем
term_list = [term[i] for i in index]
# Значение ариф.действия
variable_arithmetic = ''
# Индекс символа арифметики в списке term_list
arithmetic_index = 0
# Из списка term_list вырезаем арифметическое действие, а так же преобразовываем
# введеные пользователем данные обратно из списка, в числа\строки
for a in term_list:
if (a == '-' or a == '+' or a == '*' or a == '/'):
# Узнаем индекс символа арифметики в списке term_list
arithmetic_index = term_list.index(a, 0, len(term))
# Присваиваем variable_arithmetic значение ариф.действия
variable_arithmetic += a
break
# Проверка ввел ли пользователь ариф.действие
if (variable_arithmetic == '-' or variable_arithmetic == '+' or
variable_arithmetic == '*' or variable_arithmetic == '/'):
else:
print(variable_arithmetic)
Expression.delete(1.0, END)
Expression.insert(1.0, 'Ошибка! Нет \nарифметического \nзнака')
break
# Проверка, есть ли в том, что ввел пользователь число с плавоющей точкой
true_float_num1 = not set(".").isdisjoint(term_list)
if (true_float_num1 == True):
# До индекса ариф.действия делаем вырезку из списка term_list
num1 = term_list[0:arithmetic_index]
# Преобразовываем вырезанные значения списка в строку
try:
num1 = float(''.join(num1))
except ValueError:
Expression.insert(END, '\nОшибка! Невозможно \nвычислить\n')
break
else:
num1 = term_list[0:arithmetic_index]
# Проверка ввел ли пользователь число\строку
try:
# Преобразовываем вырезанные значения списка в строку
num1 = int(''.join(num1))
# Если пользователь ввел не число, то складываем строки без преобразования
# в числовое значение int, выполняя конкантенацию строк
except ValueError:
num1 = ''.join(num1)
# Сдвигаем значение вырезки на один символ вправо
arithmetic_index += 1
true_float_num2 = not set(".").isdisjoint(term_list)
if (true_float_num2 == True):
# После индекса ариф.действия делаем вырезку из списка term_list
num2 = term_list[arithmetic_index:]
try:
num2 = float(''.join(num2))
except ValueError:
Expression.insert(END, '\nОшибка! Невозможно \nвычислить\n')
break
else:
num2 = term_list[arithmetic_index:]
try:
num2 = int(''.join(num2))
except ValueError:
num2 = ''.join(num2)
Не могу понять где допустил ошибку табуляции, подскажите пожалуйста, вижу что в 58 строке, но не пойму что не так
Ответы (3 шт):
Автор решения: Эникейщик
→ Ссылка
Потому что после if отсутствует что нужно делать
if (variable_arithmetic == '-' or variable_arithmetic == '+' or
variable_arithmetic == '*' or variable_arithmetic == '/'): # <- где тут какое-то действие???
else:
Автор решения: CrazyElf
→ Ссылка
# Проверка ввел ли пользователь ариф.действие
if (variable_arithmetic == '-' or variable_arithmetic == '+' or
variable_arithmetic == '*' or variable_arithmetic == '/'):
else:
У вас пустой блок if, так нельзя в Питоне. Если это реально то, что вам нужно, то добавьте хотя бы пустой оператор pass:
# Проверка ввел ли пользователь ариф.действие
if (variable_arithmetic == '-' or variable_arithmetic == '+' or
variable_arithmetic == '*' or variable_arithmetic == '/'):
pass
else:
Автор решения: Danis
→ Ссылка
можно убрать else и добавить not
if not (variable_arithmetic == '-' or variable_arithmetic == '+' or
variable_arithmetic == '*' or variable_arithmetic == '/'):
# Код
можно избавится от кучи сравнений с помощью in
if variable_arithmetic not in ("-", "+", "*", "/"):
# Код