Ошибка при написании калькулятора на python

изучаю питон и пытаюсь писать калькулятор на нем же. Имеется вот такой вот код:

def calculate():
 operation = input('''
 Please type in the math operation you would like to complete:
 + for addition
 - for subtraction
 * for multiplication
 / for division
 ''')
 number_1 = int(input('Please enter the first number: '))
 number_2 = int(input('Please enter the second number: '))
 if operation == '+':
     
      print('{} + {} = '.format(number_1, number_2))
      print(number_1 + number_2)
 elif operation == '-':
   print('{} - {} = '.format(number_1, number_2))
   print(number_1 - number_2)
 elif operation == '*':
   print('{} * {} = '.format(number_1, number_2))
   print(number_1 * number_2)
 elif operation == '/':
   print('{} / {} = '.format(number_1, number_2))
   print(number_1 / number_2)
 else:
   print('You have not typed a valid operator, please run the program again.')
 # Добавление функции again() в calculate()
 again()
 def again():
  calc_again = input('''
  Do you want to calculate again?
  Please type Y for YES or N for NO.
  ''')
 if calc_again.upper() == 'Y':
   calculate()
 elif calc_again.upper() == 'N':
   print('See you later.')
 else:
  again()
calculate()

Результатом является частичное выполнение и ошибка:

Please type in the math operation you would like to complete:

     + for addition
     - for subtraction
     * for multiplication
     / for division
     -
    Please enter the first number: 12
    Please enter the second number: 12
    12 - 12 = 
    0
    Traceback (most recent call last):
      File "D:\Among Us\dg.py", line 79, in <module>
        calculate()
      File "D:\Among Us\dg.py", line 67, in calculate
        again()
    UnboundLocalError: local variable 'again' referenced before assignment
    >>> 

Подскажите, пожалуйста, как это можно исправить


Ответы (1 шт):

Автор решения: Shika_meow

Вы ничего не ответили человеку в комментариях, вот полностью рабочий код, который решает проблему

def again():
    calc_again = input('''
    Do you want to calculate again?
    Please type Y for YES or N for NO.
    ''')
    if calc_again.upper() == 'Y':
        calculate()
    elif calc_again.upper() == 'N':
        print('See you later.')
    else:
        again()
            
def calculate():
    operation = input('''
    Please type in the math operation you would like to complete:
    + for addition
    - for subtraction
    * for multiplication
    / for division
    ''')
    number_1 = int(input('Please enter the first number: '))
    number_2 = int(input('Please enter the second number: '))
    if operation == '+':
        
        print('{} + {} = '.format(number_1, number_2))
        print(number_1 + number_2)
    elif operation == '-':
        print('{} - {} = '.format(number_1, number_2))
        print(number_1 - number_2)
    elif operation == '*':
        print('{} * {} = '.format(number_1, number_2))
        print(number_1 * number_2)
    elif operation == '/':
        print('{} / {} = '.format(number_1, number_2))
        print(number_1 / number_2)
    else:
        print('You have not typed a valid operator, please run the program again.')
        # Добавление функции again() в calculate()
    again()
    
calculate()
→ Ссылка