"""
1.	Написать программу, которая будет складывать, вычитать, умножать или делить
два числа. Числа и знак операции вводятся пользователем. После выполнения
вычисления программа не должна завершаться, а должна запрашивать новые данные
для вычислений. Завершение программы должно выполняться при вводе символа '0'
в качестве знака операции. Если пользователь вводит неверный знак
(не '0', '+', '-', '*', '/'), то программа должна сообщать ему об ошибке и
снова запрашивать знак операции.

Также сообщать пользователю о невозможности деления на ноль,
если он ввел 0 в качестве делителя.

Подсказка:
Вариант исполнения:
- условие рекурсивного вызова - введена операция +, -, *, /
- условие завершения рекурсии - введена операция 0

Решите через рекурсию. Решение через цикл не принимается.
Для оценки Отлично в этом блоке необходимо выполнить 5 заданий из 7

Пример:
Введите операцию (+, -, *, / или 0 для выхода): +
Введите первое число: 214
Введите второе число: 234
Ваш результат 448
Введите операцию (+, -, *, / или 0 для выхода): -
Введите первое число: вп
Вы вместо трехзначного числа ввели строку (((. Исправьтесь
Введите операцию (+, -, *, / или 0 для выхода):
"""

def calc():
    operator = input('your operator? Press 0 to exit: ')
    while operator != '+' and operator != '-' and operator != '/' and operator != '*' and operator != '0':
        operator = input('error! Please enter correct operator: ')
    if operator == '0':
        return print('bye')
    num = int(input('number: '))
    num2 = int(input('number2: '))
    if operator == '+':
        return print(num + num2), calc()
    elif operator == '-':
        return print(num - num2), calc()
    elif operator == '*':
        return print(num * num2), calc()
    elif operator == '/':
        if num2 == 0:
            return print('error! - Zerodevision!!'), calc()
        return print(num / num2), calc()


calc()
