Новичок python: автоматический повторный запуск функции после получения возвращаемого значения - PullRequest
0 голосов
/ 30 мая 2020

Я программирую калькулятор для начинающих на Python.

Я застрял, пытаясь автоматически перезапустить функцию после получения возвращаемого значения. запускается блок.

Однако он не запускается повторно, если сумма введена правильно.

def better_calc():

    num1 = float(input("please enter your first number: "))
    op = input("please enter an operator: ")
    num2 = float(input("please enter your second number: "))
    try:
        if op == "+":
            result = num1+num2
        elif op == "-":
            result = num1-num2
        elif op == "*":
            result = num1*num2
        elif op == "/":
            result = num1/num2
        print()
        print(num1, op, num2, "=")
        return result
        better_calc()
        print()
    except UnboundLocalError:
        print("\nError: please enter an established operator")
        print()
    except ZeroDivisionError:
        print("\nError: Can not divide by zero")
        print()

    better_calc()

print(better_calc())

Итак, у меня есть два вопроса.

(1) Как мне повторно запустить функцию после получения возвращаемого значения?

(2) Стоит ли мне пытаться получить возвращаемое значение (есть ли польза?) или просто распечатать ответ без возврата?

1 Ответ

0 голосов
/ 28 августа 2020

Как кто-то сказал в комментариях, все, что ниже оператора return, не запускается, потому что оно завершает функцию, имея это в виду, мой ответ на ваш второй вопрос будет отрицательным, нет никакой пользы (в этом случае) для получения возвращаемое значение. Вместо этого я бы изменил вашу функцию на это:

def better_calc():
    num1 = float(input("please enter your first number: "))
    op = input("please enter an operator: ")
    num2 = float(input("please enter your second number: "))
    try:
        if op == "+":
            result = num1+num2
        elif op == "-":
            result = num1-num2
        elif op == "*":
            result = num1*num2
        elif op == "/":
            result = num1/num2
        print()
        print(str(num1)+" "+ str(op)+" "+ str(num2)+ " = " + str(result)) 
    #You just print the result of the calculation above
    except UnboundLocalError:
        print("\nError: please enter an established operator")
        print()
    except ZeroDivisionError:
        print("\nError: Can not divide by zero")
        print()
    answer = input("Would you like to enter another calculation?(type \"yes\" if so): ")
    return answer
    #You are using this return statement to either continue or end the while loop

Я бы также рекомендовал через некоторое время заключить ваш файл в оболочку l oop вот так:

#start of file
#have your better_calc function definition here
startingAnswer = "yes"

while(startingAnswer = "yes"):
    startingAnswer = better_calc()
#end of file

Таким образом, вы Вы можете продолжать вычисления столько, сколько захотите (не сталкиваясь с бесконечными l oop проблемами).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...