Помогите новичку

Capu

Новичок
Пользователь
Дек 2, 2022
1
0
1
Здравствуйте, может кто подсказать, пожалуйста. Меня интересует где именно ошибка в моём коде? Задача из курса для начинающих:
Напишите программу, которая считывает три числа и подсчитывает сумму только положительных чисел.

Формат входных данных
На вход программе подаются три целых числа.

Формат выходных данных
Программа должна вывести одно число – сумму положительных чисел.

Примечание. Если положительных чисел нет, то следует вывести 00.



Я хочу сам додуматься и решить, мне не нужен правильный ответ, я просто не пойму где у меня ошибка. Я решил по колхозному расписать все возможные варианты сравнений, и первая часть кода с со всеми положительными числами в разных вариантах - работает. Но не пойму почему там, где a < 0 < b <=c print (b + c) при вводе -1, 37, 62 (Что соответствует неравенству) не хочет выдавать результат. Пожалуйста не нужно мне сразу выдавать решение, и я понимаю что скорее всего есть решение короче и проще. Но я хочу сам додуматься, не читая решений. Просто не пойму что именно в моем коде не так? Я чего-то не дописал из неравенств? Почему тогда верхняя часть работает? мой код

a, b, c = int(input()), int(input()), int(input())
if 0 < a <= b <= c:
print(a + b + c)
else:
if 0 < a >= b <= c:
print(a + b + c)
else:
if 0 < a >= b >= c:
print(a + b + c)
else:
if 0 < a <= b >= c:
print(a + b + c) # до сюда код работает
else:
if a < 0 < b <= c: # тут при вводе чисел, которые соответствуют неравенству, выдаёт 0. почему?
print(b + c)
else:
if a < 0 < b >= c:
print(b + c)
else:
if a <= b < 0 < c:
print(c)
else:
if a >= b < 0 < c:
print(c)
else:
if b < 0 < a <= c:
print(a + c)
else:
if b < 0 < a >= c:
print(a + c)
else:
if c < 0 < a <= b:
print(a + b)
else:
if c < 0 < a >= b:
print(a + b)
else:
if a <= c < 0 < b:
print(b)
else:
if a >= c < 0 < b:
print(b)
else:
if b <= c < 0 < a:
print(a)
else:
if b >= c < 0 < a:
print(a)
else:
print(0) # Я подозреваю, что этот print(0) всё и ломает, но не знаю, что сюда вписать.
 
Последнее редактирование:

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
Есть же инструкция "elif". Почему ты ее не используешь?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 583
457
83
Здравствуйте, может кто подсказать, пожалуйста. Меня интересует где именно ошибка в моём коде? Задача из курса для начинающих:
Напишите программу, которая считывает три числа и подсчитывает сумму только положительных чисел.

Формат входных данных
На вход программе подаются три целых числа.

Формат выходных данных
Программа должна вывести одно число – сумму положительных чисел.

Примечание. Если положительных чисел нет, то следует вывести 00.



Я хочу сам додуматься и решить, мне не нужен правильный ответ, я просто не пойму где у меня ошибка. Я решил по колхозному расписать все возможные варианты сравнений, и первая часть кода с со всеми положительными числами в разных вариантах - работает. Но не пойму почему там, где a < 0 < b <=c print (b + c) при вводе -1, 37, 62 (Что соответствует неравенству) не хочет выдавать результат. Пожалуйста не нужно мне сразу выдавать решение, и я понимаю что скорее всего есть решение короче и проще. Но я хочу сам додуматься, не читая решений. Просто не пойму что именно в моем коде не так? Я чего-то не дописал из неравенств? Почему тогда верхняя часть работает? мой код

a, b, c = int(input()), int(input()), int(input())
if 0 < a <= b <= c:
print(a + b + c)
else:
if 0 < a >= b <= c:
print(a + b + c)
else:
if 0 < a >= b >= c:
print(a + b + c)
else:
if 0 < a <= b >= c:
print(a + b + c) # до сюда код работает
else:
if a < 0 < b <= c: # тут при вводе чисел, которые соответствуют неравенству, выдаёт 0. почему?
print(b + c)
else:
if a < 0 < b >= c:
print(b + c)
else:
if a <= b < 0 < c:
print(c)
else:
if a >= b < 0 < c:
print(c)
else:
if b < 0 < a <= c:
print(a + c)
else:
if b < 0 < a >= c:
print(a + c)
else:
if c < 0 < a <= b:
print(a + b)
else:
if c < 0 < a >= b:
print(a + b)
else:
if a <= c < 0 < b:
print(b)
else:
if a >= c < 0 < b:
print(b)
else:
if b <= c < 0 < a:
print(a)
else:
if b >= c < 0 < a:
print(a)
else:
print(0) # Я подозреваю, что этот print(0) всё и ломает, но не знаю, что сюда вписать.
это ужас...
во первых, код нужно вставлять как код, соблюдая отступы - https://itfy.org/threads/kak-ne-nado-zadavat-voprosy.3450/#post-13566
во вторых, не нужно делать такую лестницу из ифов, эту задачу можно решить двумя вариантами (первые что пришли в голову)
первый: вам нужно выяснить, все ли числа положительные, то есть каждое число проверяете, больше ли нуля, если меньше, значит присваиваете ноль, в конце суммируете
второй: использовать функцию max()
 
  • Мне нравится
Реакции: 4olshoy_blen

Форум IT Специалистов