Python基础:如何在stdin中读取N个整数直至找到'\n
我该怎么从输入中读取N个整数,并在遇到换行符\n
时停止读取?另外,我该如何把这些整数放到一个可以操作的数组里呢?
我想要的功能类似于C语言中的做法,但我想用Python来实现。
while(scanf("%d%c",&somearray[i],&c)!=EOF){
i++;
if (c == '\n'){
break;
}
}
2 个回答
13
在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]
19
在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()))