Попытка получить входные данные из стандартного файла и преобразовать в целое число для sum

#python

#python

Вопрос:

Очень новичок в Python. Попытка получить входные данные из stdin в виде чисел, например. 416 2876 2864 8575 9784 и преобразовать в int для суммы всех, используя цикл.

Ужасно сложно просто преобразовать в int для использования в цикле. Хотел бы получить подсказку по целочисленной проблеме, а затем попытаться решить сам. Пытался протестировать свой код для печати целых чисел после преобразования.

в настоящее время есть:

 import sys
s=sys.stdin
n=(sys.stdin.split())
while (int(n) >= 1):
    print(n)
  

Комментарии:

1. Откуда поступает ввод?

2. В чем проблема, с которой вы столкнулись?

3. Господа, я использую стандартный ввод, потому что они уже сгенерированы для меня на веб-сайте, предназначенном для обучения. Я просто пытаюсь вызвать их и получить целые числа на данный момент.

Ответ №1:

Вы, вероятно, не хотите использовать sys.stdin напрямую. Используйте input() вместо этого.

 line = input("Enter some numbers: ")

total = 0

for n in line.split():
    total = total   int(n)

print("The total is: %d" % total)
  

Комментарии:

1. raw_input был заменен на input в python 3, я думаю

2. Да, это так. Я не хотел слишком сильно загромождать свой ответ; если poster использует Python 3, я предполагаю, что он ответит, а затем я отредактирую свой ответ.

3. Да, я изучаю / использую Python 3. Я использую stdin, потому что они являются входными данными, уже сгенерированными для меня на веб-сайте, предназначенном для обучения. Я просто пытаюсь вызвать их и получить целые числа на данный момент.

4. Это правильно. Это сработало. Для моего собственного понимания, как я мог указать, чтобы работать только с ОПРЕДЕЛЕННОЙ строкой в stdin? например, sys.stdin.read (строка 2-5)?

5. Вы можете вызвать sys.stdin.readlines() , который возвращает список входных строк, а затем выбрать и выбрать любую из строк, которые вы хотите использовать. Однако для этого требуется, чтобы тот, кто вводит входные данные, также отправлял сигнал EOF, когда они закончат (в противном случае он будет пытаться читать вечно).

Ответ №2:

 user_input = input("Type some numbers: ")

numbers = user_input.split()

print(sum([int(x) for x in numbers]))
  

Комментарии:

1. Я вижу, что вы там сделали, но нужно извлечь числа из stdin, которые уже есть.

Ответ №3:

Если вы хотите прочитать из stdin и преобразовать в int, просто выполните итерацию по stdin и разделите, затем приведите каждое значение int и sum :

 ~$ cat test.py
import sys


print(sum(int(i) for sub  in sys.stdin for i in sub.split()))

padraic@dell:~$ printf "416 2876 2864 8575 9784n123 456 789 120"|python test.py
26003
  

Или с помощью map:

 import sys
print(sum(sum(map(int, sub.split())) for sub  in sys.stdin))
  

Или просто вызовите read и split .

 import sys
print(sum(map(int, sys.stdin.read().split())))