Дай угадаю.
1. Ты рассчитываешь стандартное отклонение последовательности.
2. Последовательность заканчивается нулём.
3.
Ты это делаешь в рамках какой-то олимпиады или конкурса, где код выполняется в тестовом окружении (песочнице) с фиксированным вводом.
Тестовое окружение подаёт на
стандартный ввод твоей программы элементы последовательности. Твоя программа поглощает эти элементы вызовами input() в рамках первого цикла while.
Подав всю последовательность, тестовое окружение, очевидно, закрывает стандартный ввод.
Но ты СНОВА обращаешься к стандартному вводу (input()) в рамках цикла for! Поскольку ввод уже закрыт, генерируется исключение IOError.
Что делать?
Вариант 1. Сохраняй элементы в коллекцию, например в список, и итерируйся по списку для расчёта среднего и дисперсии. Может провалиться, если есть ограничение на потребление памяти при очень длинной последовательности на вводе.
Вариант 2. Гугли one-pass dispersion calculation (однопроходный расчёт дисперсии). Есть формулы для расчёты среднего и дисперсии, которые позволяют их считать, не храня последовательность целиком, а только читая каждый элемент по мере его поступления.
Зная дисперсию, найти стандартное отклонение тривиально.