ТГ бот

Программа на Python (Python Playground) завершается с ошибкой. Что не так?…

Информатика10 классРешено по фото 14 октября 2026 в 18:28
Ошибка EOFError в программе на Python

Программа на Python (Python Playground) завершается с ошибкой. Что не так?

s=0
k=0
n=int(input())
while n!=0:
    s+=1
    if n%2==0:
        k+=n
        n=int(input())
print(k)
print(s)

Вывод:
Traceback (most recent call last):
File "/home/main.py", line 3, in <module>
n=int(input())
EOFError: EOF when reading a line</parameter>

Решение

Ошибка EOFError на строке означает, что программа вызвала input(), а вводить нечего: поле STDIN пустое. Программа читает числа до тех пор, пока не встретит , поэтому данные нужно подать в поле STDIN, по одному числу в строке, закончив нулём.

Есть и ошибка в самом коде: строка n=int(input()) (строка ) стоит с отступом внутри if n%==:. Если число нечётное, новое число не считывается, и цикл while зациклится на одном и том же n бесконечно. Строку нужно сдвинуть на уровень if, то есть внутрь цикла while, но не внутрь if:

s=
k=
n=int(input())
while n!=:
    s+=
    if n%==:
        k+=n
    n=int(input())
print(k)
print(s)

Пример ввода в STDIN (каждое число с новой строки):





Вывод: (сумма чётных) и (количество чисел до нуля).

💡 Почему так

input() ждёт данные из STDIN; если их нет, возникает EOFError. Чтение следующего числа должно выполняться на каждой итерации цикла, поэтому оно стоит на одном уровне с if, а не внутри него.

Ответ
✓ dzmen.ru
  1. Поле STDIN пустое: программе нечего читать, отсюда EOFError. Введите числа по одному в строке, последнее — .
  2. Строку n=int(input()) в цикле надо сдвинуть влево, на уровень if, иначе при нечётном числе цикл будет бесконечным.
Помогло?

Есть ещё задание?Сфоткай, и ДЗмэн решит за пару секунд.

Решить по фото