Почему возникла ошибка 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 ("-", "+", "*", "/"):
    # Код
→ Ссылка