5

How can I read N ints from the input, and stop reading when I find \n? Also, how can I add them to an array that I can work with?

I'm looking for something like this from C but in python

while(scanf("%d%c",&somearray[i],&c)!=EOF){
    i++;
    if (c == '\n'){
        break;
    }
}
drs
  • 5,679
  • 4
  • 42
  • 67
fmsf
  • 36,317
  • 49
  • 147
  • 195

2 Answers2

19

In Python 2:

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

raw_input() reads a whole line from the input (stopping at the \n) as a string. .split() creates a list of strings by splitting the input into words. map(int, ...) creates integers from those words.

In Python 3 raw_input has been renamed to input and map returns an iterator rather than a list, so a couple of changes need to be made:

lst = list(map(int, input().split()))
Roberto Bonvallet
  • 31,943
  • 5
  • 40
  • 57
13

There is no direct equivalent of scanf in Python, but this should work

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

In Python3 raw_input has been renamed to input

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

Here is a breakdown/explanation

>>> 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]
John La Rooy
  • 295,403
  • 53
  • 369
  • 502