Возврат из функции на предыдущую функцию с вводом переменных, как бы она не называлась. Возможно такое сделать в питоне?
Можно ли сделать так чтобы exсept возвращал на ввод функции, из которой он берет переменные. Любой функции, то есть как бы возврат в предыдущую функцию, как бы она не называлась. Возможно такое сделать? #Вместо inp() любая другая функция, и он бы возвращал на ввод переменных.
import math
def fun(a, b, c):
if a == 0:
print("a не может быть равно нулю")
inp()# вместо этого
try:
D = b ** 2 - 4 * a * c
except OverflowError:
print("Это перебор с цифрами")
inp()
except ValueError:
print("Это не целое или рациональное число")
inp()
print("Дискриминант D = %.2f" % D)
if math.isinf(D) or math.isnan(D):
print("Габелла, бесконечность - предел(слишком большое число)")
inp()
elif D > 0:
x1 = (-b + math.sqrt(D)) / (2 * a)
x2 = (-b - math.sqrt(D)) / (2 * a)
print("x1 = %.2f \nx2 = %.2f" % (x1, x2))
elif D == 0:
x = -b / (2 * a)
print("x = %.2f" % x)
else:
print("Корней нет")
def inp():
print("Введите коэффициенты для уравнения - целые или рациональные числа")
print("ax^1+bx+c=0")
a = float(input("a="))
b = float(input("b="))
c = float(input("c="))
fun(a, b, c)
inp()
Ответы (1 шт):
Автор решения: Сергей Ш
→ Ссылка
как пример
import math
def fun(a, b, c):
if a == 0:
raise RuntimeError("a не может быть равно нулю")
D = b ** 2 - 4 * a * c
print("Дискриминант D = %.2f" % D)
if math.isinf(D) or math.isnan(D):
raise RuntimeError("Габелла, бесконечность - предел(слишком большое число)")
elif D > 0:
x1 = (-b + math.sqrt(D)) / (2 * a)
x2 = (-b - math.sqrt(D)) / (2 * a)
print("x1 = %.2f \nx2 = %.2f" % (x1, x2))
elif D == 0:
x = -b / (2 * a)
print("x = %.2f" % x)
else:
print("Корней нет")
def inp():
print("Введите коэффициенты для уравнения - целые или рациональные числа")
print("ax^1+bx+c=0")
a = float(input("a="))
b = float(input("b="))
c = float(input("c="))
fun(a, b, c)
while True:
try:
inp()
except OverflowError:
print("Это перебор с цифрами")
continue
except ValueError:
print("Это не целое или рациональное число")
continue
except RuntimeError as ex:
print(ex)
continue
break