@michadimin

Вывод всех введённых чисел, кроме 0, но ввод можно продолжить и после 0. Не понимаю: как решить?

Умоляю! Помогите решить это дерьмо! Я испробовал 3 различных варианта решения, но ни один из них не удовлетворял ВСЕМ требованиям задачи.

Пользователь вводит числа одно за другим до тех пор, пока не введёт ноль. Программа должна выводить введенные числа до тех пор, пока не будет введен 0. Никаких операций с числами не производится.

Формат ввода:
Вводятся целые числа одно за другим, на отдельных строках.

Формат вывода:
Выводятся введенные числа на отдельных строках до тех пор, пока не будет введен ноль

Пример 1:
Ввод:
1
2
3
4
5
6
7
8
9
0
1
Вывод:
1
2
3
4
5
6
7
8
9

Пример 2:
Ввод:
5
4
3
2
1
0
1
2
3
4
5
Вывод:
5
4
3
2
1

Прошу обратить внимание! Ввод пользователя НЕ ЗАКАНЧИВАЕТСЯ на 0, а имеет способность продолжиться! Задача на тему цикла while.
  • Вопрос задан
  • 1121 просмотр
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Вместо input() читай из sys.stdin как из текстового файла?
import sys
for line in sys.stdin:
  ... #обрабатываешь введённую строку

В винде можно в консоли нажать ctrl-z, Enter, это будет сигнал "конец стандартного ввода". Это будет как-бы конец файла, и цикл for прервётся.

Соответственно, просто делаешь логический флаг "был введён 0" (по умолчанию сброшен), и пока он сброшен - повторяешь введённые числа. Когда он выставлен - не повторяешь. Если пользователь ввёл 0 - выставляешь этот флаг.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы