Дан код по нахождению дискриминанта, нужно вывести действия в функцию, которую мы вызываем после ввода переменных
import math
while True:
print("Введите коэффициенты для уравнения - целые или рациональные числа")
print("ax^1+bx+c=0")
try:
a = float(input("a="))
b = float(input("b="))
c = float(input("c="))
D = b ** 2-4 * a * c
except ValueError:
print("Это не целое или рациональное число")
continue
except OverflowError:
print("Это перебор с цифрами")
continue
except ZeroDivisionError:
print("Ввели нули")
continue
print("Дискриминант D = %.2f" % D)
if math.isinf(D) or math.isnan(D):
print("Габелла, бесконечность - предел(слишком большое число)")
continue
elif a == 0:
print("a не может быть равно нулю")
continue
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("Корней нет")
break
Ответы (1 шт):
Автор решения: Gans Liber
→ Ссылка
Возможно немного замудрёно, но оказалось не сложно
import math
def fun(a, b, c, D):
print("Дискриминант D = %.2f" % D)
if math.isinf(D) or math.isnan(D):
print("Габелла, бесконечность - предел(слишком большое число)")
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("Корней нет")
while True:
print("Введите коэффициенты для уравнения - целые или рациональные числа")
print("ax^1+bx+c=0")
try:
a = float(input("a="))
if a == 0:
print("a не может быть равно нулю")
continue
b = float(input("b="))
c = float(input("c="))
D = b ** 2-4 * a * c
except ValueError:
print("Это не целое или рациональное число")
continue
except OverflowError:
print("Это перебор с цифрами")
continue
fun(a, b, c, D)
break