当我试图从stdin读取几个中间有空格的字符串时,为什么Python会出错



我不知道为什么我的在线ide在执行以下代码时会抛出错误:

n = int(input())
lst = []
for i in range(n):
lst.append(input())
print(lst)

当我将这些作为输入时:

5
first string
second string
third string
almost done
done now

我得到这个错误:

$python main.py
Traceback (most recent call last):
File "main.py", line 6, in <module>
lst.append(input())
File "<string>", line 1
first string
^
SyntaxError: invalid syntax

有趣的是,我在VS code上用相同的输入运行相同的代码,没有遇到错误,甚至得到了结果:

['first string', 'second string', 'third string', 'almost done', 'done now']

发生了什么事?我很困惑。。。

问题是在线IDE使用Python 2.7,需要使用raw_input()来正确处理输入。你需要这样的东西:

n = int(input())
lst = []
for i in range(n):
lst.append(raw_input().strip())
print(lst)
# prints ['first string', 'second string', 'third string', 'almost done', 'done now']

您可以在这里阅读更多关于inputraw_input之间的区别。

最新更新