Как кто-то сказал в комментариях, все, что ниже оператора 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 проблемами).