Подскажите,почему функция не воспроизводится,и при любых входных коэффициентах(где дискриминант больше 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

Так что просто задайте правильный набор данных.

→ Ссылка