Предмет: Информатика, автор: apolinaria2901

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

Приложения:

experced: что консоль выводит?
apolinaria2901: я прикрепила фото

Ответы

Автор ответа: GameRoMan2
1

У тебя много ошибок в коде, вот работающий код:



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))

Автор ответа: TemaZpro
1

Ответ:

Ошибка в некорректном использовании функции, да и по формуле 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))

Приложения:
Похожие вопросы