Однострочный ввод без использования спискаPython

Программы на Python
Ответить
Anonymous
 Однострочный ввод без использования списка

Сообщение Anonymous »

Предположим, я хочу создать программу, которая принимает вводимые пользователем данные в одну строку (они должны быть в одной строке, они не могут быть в нескольких строках), затем суммируют их и печатают. В терминале это будет выглядеть примерно так:

Код: Выделить всё

Input: 30 40 50
Output: 120
Я знаю, что построить на Python чрезвычайно просто (одна строка):

Код: Выделить всё

print(sum(list(map(int,input().split()))))
Но этот метод сохраняет каждое число во входных данных, поскольку он преобразует введенные пользователем данные в список для его сохранения. Таким образом потребляется много памяти. Что делать, если пользователь хочет ввести 30 миллионов чисел в одну строку? ОС просто закроет мою программу, поскольку она попытается одновременно сохранить 30 миллионов чисел.
В C я бы решил проблему, используя только четыре переменные.

Код: Выделить всё

#include 

int main()
{
int n,a,sum;
sum = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &a);
sum += a;
}
printf("%d\n", sum);
}

Код: Выделить всё

Input: 3
30 40 50
Output: 120
Эта программа не сохраняет все введенные пользователем данные одновременно. Он отбрасывает предыдущий ввод пользователя и сохраняет только текущий ввод. Тем не менее, он может выполнить ту же задачу, используя всего 32 байта памяти.
Могу ли я сделать то же самое в Python? Я перерыл весь Интернет и не нашел способа обрабатывать по одному числу за раз, когда пользователь вводит данные всего в одну строку.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-a-list
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»