Чтобы напечатать частичные суммы целых чисел, заданные на стандартном входе один на строку:
#!/usr/bin/env python3
import sys
partial_sum = 0
for n in map(int, sys.stdin):
partial_sum += n
print(partial_sum)
Пример запуска.
Если по какой-то причине команда слишком медленная; вы можете использовать программу C:
#include
#include
#include
int main(void)
{
uintmax_t cumsum = 0, n = 0;
for (int c = EOF; (c = getchar()) != EOF; ) {
if (isdigit(c))
n = n * 10 + (c - '0');
else if (n) { // complete number
cumsum += n;
printf("%ju\n", cumsum);
n = 0;
}
}
if (n)
printf("%ju\n", cumsum + n);
return feof(stdin) ? 0 : 1;
}
Чтобы создать и запустить, введите:
$ cc cumsum.c -o cumsum
$ ./cumsum < input > output
UINTMAX_MAX is 18446744073709551615.
Код C в несколько раз быстрее, чем команда awk на моей машине для входного файла, сгенерированного с помощью:
#!/usr/bin/env python3
import numpy.random
print(*numpy.random.random_integers(100, size=2000000), sep='\n')