Как решить задачу с определением трех сторон треугольника? Задача: Определите тип треугольника (остроугольный, тупоугольный, прямоугольный) с данными сторонами. Необходимо вывести одно из слов: "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')
В вашем коде ошибка заключается в неправильной проверке условия на исполнение неравенства треугольника. В конце кода нельзя сравнивать общую сумму сторон (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')
Вот правильный код, который должен работать корректно для всех входных данных.Будьте проще, менее длинные фрагменты кода часто более читаемы.
В вашем коде ошибка заключается в неправильной проверке условия на исполнение неравенства треугольника. В конце кода нельзя сравнивать общую сумму сторон (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')
Вот правильный код, который должен работать корректно для всех входных данных.Будьте проще, менее длинные фрагменты кода часто более читаемы.