Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python basics: How to read N ints until '\n' is found in stdin

Tags:

python

stdin

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;
    }
}
like image 532
fmsf Avatar asked Feb 17 '10 23:02

fmsf


2 Answers

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()))
like image 192
Roberto Bonvallet Avatar answered Oct 22 '22 03:10

Roberto Bonvallet


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]
like image 38
John La Rooy Avatar answered Oct 22 '22 03:10

John La Rooy