Python基础:如何在stdin中读取N个整数直至找到'\n

5 投票
2 回答
9522 浏览
提问于 2025-04-15 19:25

我该怎么从输入中读取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()))

撰写回答