Как решить задачу с определением трех сторон треугольника? Задача:
Определите тип треугольника (остроугольный, тупоугольный, прямоугольный) с данными сторонами.
Необходимо вывести одно из слов: "right" для прямоугольного треугольника, "acute" для остроугольного треугольника, "obtuse" для тупоугольного треугольника или "impossible", если входные числа не образуют треугольник.
Чем же плох мой способ?
a = int(input())
b = int(input())
c = int(input())
if pow(c, 2) == pow(a, 2) + pow(b, 2):
print('right')
elif pow(b, 1) + pow(c, 2) - pow(a, 2) > 0:
print('acute')
elif pow(a, 2) + pow(b, 2) < pow(c, 2):
print('obtuse')
elif (a + b) <= c or (a + b) <= b or (c + b) <= a:
print('impossible')

21 Авг 2019 в 06:04
1 029 +1
0
Ответы
1

В вашем коде ошибка заключается в неправильной проверке условия на исполнение неравенства треугольника. В конце кода нельзя сравнивать общую сумму сторон (a + b) или (c + b) с одной из сторон, так как это не дает правильного результата.

Правильным способом будет использование правила треугольника, что сумма двух сторон всегда должна быть больше третьей стороны:

if a + b <= c or a + c <= b or b + c <= a:
print('impossible')
else:
if pow(c, 2) == pow(a, 2) + pow(b, 2):
print('right')
elif pow(c, 2) > pow(a, 2) + pow(b, 2):
print('obtuse')
else:
print('acute')

Вот правильный код, который должен работать корректно для всех входных данных.Будьте проще, менее длинные фрагменты кода часто более читаемы.

20 Апр в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир