Python не выводит результат функции - Общение Python мододелов

Вопрос Python не выводит результат функции

Регистрация
5 Дек 2013
Сообщения
71
Репутация
10
Спасибо
0
Монет
0
298054582_68e4d80e6902c6cd22bf0510f5dedf65_800.png

Просто пустая строка, мои значения видно, все должно быть нормально и он должен вывести функцию incom_c так как c == 0
 

lts

Capitan

lts

Capitan
Регистрация
25 Май 2013
Сообщения
108
Репутация
0
Спасибо
0
Монет
0
При рассмотрении представленного кода возможно выявление проблемы с выводом результатов работы функции. В коде определены две функции: quadratic_equation и incom_c. Первая функция quadratic_equation решает квадратное уравнение и успешно отображает результаты вычислений при наличии действительных корней и дискриминанта, большего или равного нулю. Однако, в случае дискриминанта меньше нуля никаких результатов не выводится, а в случае дискриминанта равного нулю выводится только один корень.

Проблема с функцией incom_c заключается в том, что при значениях параметров a и b, когда a=0, функция содержит ошибку. Это связано с тем, что в экспрессии infer(0/0) величина a принимает значение нуля, что приводит к возникновению ошибки при выполнении операции деления на ноль.

Для решения этих проблем в код можно добавить несколько проверок.

Чтобы проверить значение дискриминанта в квадратном уравнении на возможность поиска корней, необходимо добавить условие, проверяющее его знак. Если дискриминант меньше нуля, функция должна выводить сообщение о том, что корней нет. Если значения дискриминанта равно 0 или больше, чем ноль, функция должна вывести корни уравнения.

Чтобы исправить ошибку в функции incom_c, достаточно добавить условие, которое проверяет параметр a на равенство нулю. Если a=0, функция должна выводить сообщение о том, что такое уравнение не может быть решено.

В итоге, следующий код верно будет решать квадратное уравнение и выводить результаты функции incom_c, включая обработку ошибок:

import math

def quadratic_equation(a, b, c):
disc = b ** 2 - 4 * a * c
print(f"D is equal to {disc}")
if disc < 0:
print("Equation has no roots, Discriminant < 0")
elif disc == 0:
x = -b / (2 * a)
print(f"The root is {x:.3f}")
else:
x_one = (-b + math.sqrt(disc)) / (2 * a)
x_two = (-b - math.sqrt(disc)) / (2 * a)
print(f"The roots are {x_one:.2f} and {x_two:.2f}")

def incom_c(a, b):
if a == 0:
print("This equation cannot be solved")
else:
x = 0
second_root = -b / a
print(f"The roots are {x} and {second_root}")
 
Регистрация
8 Авг 2013
Сообщения
74
Репутация
0
Спасибо
0
Монет
0
Проблема заключается в том, что в случае, когда c равно 0 и b больше 0, ваш код вызывает функцию incom_c(a, b), которая рассчитывает значение корней и выводит их, но не делает возврата значения.

Чтобы исправить это, вам нужно изменить функцию incom_c(a, b) так, чтобы она возвращала значение корней, а затем изменить вызов функции incom_c(a, b) на print(incom_c(a, b)), чтобы вывести результаты.

Вот исправленный код:


import math

def quadratic_equation(a, b, c):
disc = b ** 2 - 4 * a * c
print(f"D is equal to {disc}")
if disc < 0:
print("Equation have no root, Discriminant < 0")
elif disc == 0:
x = -b / (2 * a)
print(f"The root is {x:.3f}")
else:
x_one = (-b + math.sqrt(disc)) / (2 * a)
x_two = (-b - math.sqrt(disc)) / (2 * a)
print(f"The roots are {x_one:.2f} and {x_two:.2f}")

def incom_c(a, b): # ax+bx = 0
x = 0
second_root = -b / a
print(f"First root is {x} and second is {second_root:.2f}")
return (x, second_root)

a = int(input("Enter coef. of a: "))
b = int(input("Enter coef. of b: "))
c = int(input("Enter coef. of c: "))

if b > 0 and c > 0:
quadratic_equation(a, b, c)
elif c == 0 and b > 0:
print(incom_c(a, b))

Здесь мы изменяем функцию incom_c(a, b) так, чтобы она возвращала корни уравнения, используя кортеж (x, second_root). Затем мы изменяем вызов функции incom_c(a, b) на print(incom_c(a, b)), чтобы вывести результаты.
 
Сверху Снизу