Вопрос по питону
При решении задачи: Напишите программу в которой пользователь вводит три числа, а программа определяет может ли существовать треугольник с этими сторонами.
Решение вот такое:
b = list(input("Введите три целых числа: "))
for i in b:
if b[0] + b[1] > b[2]:
print("Треугольник существует")
else:
print("Треугольник не существует")
Но программа выводит ответ несколько раз:
Введите три целых числа: 123
Треугольник не существует
Треугольник не существует
Треугольник не существует
Как это исправить????
Answers & Comments
1) как исправить:
использовать флаг, отдельную переменную которая будет изменяться в зависимости от условий
т.е. после ввода b прописываем допустим flag = 0, тогда в вашем if меняем знак больше на меньше и в теле if прописываем flag += 1
(если какая-то сторона будет больше суммы двух других, flag станет больше единицы)
соответственно else нам не нужен
после прохода всех итераций for пишем вывод с условиями:
если flag больше 0, то не существует, если иначе, существует
2) можно было не заморачиваться с for, а просто проверить сразу все условия:
znanija.com/task/45736920 - мое решение(ввод в первых 3 строках меняется на первую вашу)
3) далее. ваш ввод не будет работать если длина любой из сторон будет больше 10(поскольку будут взяты только первые 3 числа из списка)
4) также ваш цикл не будет работать поскольку вы проверяете одни и те же значения из b, местами они никак не меняется, соответственно ответ всегда будет один и тот же
5) ваше решение я изменил учитывая вышеописанные пункты, но на мой взгляд оно нежизнеспособно, советую воспользоваться решением по ссылке
b = list(map(int, input("Введите три целых числа: ").split()))
flag = 0
for i in b:
for j in b:
for k in b:
if i != j and i != k and k != j:
if i + j <= k:
flag += 1
if flag > 0:
print("Треугольник не существует")
else:
print("Треугольник существует")