Основы Python: как читать N ints, пока в stdin не будет найдено \ n - PullRequest
4 голосов
/ 18 февраля 2010

Как я могу прочитать N int s со входа и остановить чтение, когда найду \n? Кроме того, как я могу добавить их в массив, с которым я могу работать?

Я ищу что-то подобное в C, но в python

while(scanf("%d%c",&somearray[i],&c)!=EOF){
    i++;
    if (c == '\n'){
        break;
    }
}

Ответы [ 2 ]

17 голосов
/ 18 февраля 2010

В Python 2:

lst = map(int, raw_input().split())

raw_input() читает всю строку из ввода (останавливаясь на \n) как строку. .split() создает список строк, разбивая входные данные на слова. map(int, ...) создает целые числа из этих слов.

В Python 3 raw_input был переименован в input и map возвращает итератор, а не список, поэтому необходимо внести пару изменений:

lst = list(map(int, input().split()))
13 голосов
/ 18 февраля 2010

В Python нет прямого эквивалента scanf, но это должно работать

somearray = map(int, raw_input().split())

В Python3 raw_input был переименован в input

somearray = map(int, input().split())

Вот разбивка / объяснение

>>> raw=raw_input()              # raw_input waits for some input
1 2 3 4 5                        # I entered this
>>> print raw
1 2 3 4 5                            
>>> print raw.split()            # Make a list by splitting raw at whitespace
['1', '2', '3', '4', '5']            
>>> print map(int, raw.split())  # map calls each int() for each item in the list
[1, 2, 3, 4, 5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...