Подскажите,почему функция не воспроизводится,и при любых входных коэффициентах(где дискриминант больше 0)выдает "id"?
Подскажите,почему функция не воспроизводится,и при любых входных коэффициентах (где дискриминант больше 0) выдает “id”?
import math
print("Запишите коэффициенты данного квадратного уравнения: ax^2 + bx + c = 0 ")
def cof(d, e, f):
return (d ** 2 - 4 * e * f)
def root1(b, cof, a):
return (- b + math.sqrt(cof())) / (2 * a)
def root2(b, cof, a):
return (- b - math.sqrt(cof())) / (2 * a)
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
if (a != 1):
#Disk = cof(a, b, c)
if (cof(a, b, c) > 0):
print("Дискриминант D = %.2f" % (cof(a, b, c)))
else:
print("ld")
Ответы (2 шт):
Автор решения: Евгений
→ Ссылка
Потому что для большей наглядности следует помнить о значащих именах переменных. Вы передаёте в cof аргументы (a, b, c), и, исходя из тела этой функции, считаете дискриминант по формуле a**2 - 4*b*c. В то же время реальная формула - b**2 - 4*a*c.
Именно из-за абстрактных d, e, f вы и не увидели эту ошибку
import math
print("Запишите коэффициенты данного квадратного уравнения: ax^2 + bx + c = 0 ")
def cof(a, b, c):
return (b**2 - 4*a*c)
def root1(b, cof, a):
return (- b + math.sqrt(cof())) / (2 * a)
def root2(b, cof, a):
return (- b - math.sqrt(cof())) / (2 * a)
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
if (a != 1):
if (cof(a, b, c) > 0):
print("Дискриминант D = %.2f" % (cof(a, b, c)))
else:
print("ld")
Запишите коэффициенты данного квадратного уравнения: ax^2 + bx + c = 0
a = 2
b = 5
c = 2
Дискриминант D = 9.00
Автор решения: passant
→ Ссылка
Потому, что вы задаете такие данные.
Введите, например a = 100, b = 2, c = 3
И благополучно получите
Дискриминант D = 9976.00
Так что просто задайте правильный набор данных.