питон! не могу понять в чем конкретно ошибка во второй функции


Ответы
У тебя много ошибок в коде, вот работающий код:
from math import sqrt
def p(a,b,c): return (a+b+c)/2
def Heron(a,b,c):
P = p(a,b,c)
return sqrt(P*(P-a)*(P-b)*(P-c))
a, b, c = map(int, input().split())
print(Heron(a,b,c))
Ответ:
Ошибка в некорректном использовании функции, да и по формуле p= (a+b+c)/2, нужно делить на 2, а не на 3. Почему? Потому что это формула получения полумериметра треугольника (сумму всех сторон треугольника поделить на 2, чтобы получить половину суммы сторон, полупериметр). А далее полученный полупериметр мы должны использовать в формуле Герона.
Объяснение:
Исправить нужно функции p и Heron, нельзя переопределять функции внутри функции, как это у вас (название функции p и вы писали внутри функции p = .... Предлагаю использовать доп переменную, чтобы было понятнее.
Вот рабочий исправленный код:
from math import sqrt
def p(a, b, c):
pp=(a+b+c)/2 #(добавляем переменную s и исправляем формулу, так как нужно делить на 2, а не на 3.
return pp #(возвращаем здесь именно переменную с ответом, а не функцию!)
#(в этой функции все то же самое)
def Heron(a, b, c):
#(тут мы используем повторно название переменной "pp", потому что она не будет конфликтовать, т.к. предыдущая переменная "pp" находится внутри функции p, мы не можем получить к ней доступ, она создана внутри функции и относится именно к этой функции.
pp = p(a, b, c) #(получаем результат функции нахождения полупериметра)
result = sqrt(pp * (pp - a) * (pp - b) * (pp - c)) #(применяем результат с формулой Герона)
return round(result, 2)
a = 3
b = 4
c = 5
print(Heron(a, b, c))
