脚本可在Shell中运行,但不能作为IDLE文件运行

时间:2019-03-15 08:33:55

标签: python shell command-line eof

在shell上逐行执行以下代码时,它会提供预期的输出:

>>> name=input("Please give your full name : ")
Please give your full name : ins vikranth
>>> ListName=name.split(' ')
>>> outputString=ListName[1]+' '+ListName[0]
>>> print(outputString)
vikranth ins

该代码不是作为文件整体运行,而是在shell上逐行运行。 代码是:

name=input("Please give your full name : ")
ListName=name.split(' ')
outputString=ListName[1]+' '+ListName[0]
print(outputString)

错误消息是:

Please give your full name : ins vikranth
Traceback (most recent call last):
  File "ReverseName.py", line 1, in <module>
    name=input("Please give your full name
  File "<string>", line 1
    ins vikranth
               ^
SyntaxError: unexpected EOF while parsing

为什么会这样?

2 个答案:

答案 0 :(得分:2)

发生这种情况的原因是您的python版本...使用python 3.X对文件进行“翻译”(Interpret)时,您的IDLE为python 2.X ...因此有2个简单的解决方案:

1 /坚持使用python 3.X-您的代码将不会更改,只需更改解释器即可

2 /将其编辑为与python 2.X兼容:

name=raw_input("Please give your full name : ")

这里还有2个在线编译器,您可以在其中看到不同之处:

Python 3.7-> https://www.onlinegdb.com/online_python_compiler

Python 2.7-> https://repl.it/languages/python

答案 1 :(得分:-1)

@Babu兄弟代码对我来说似乎不错,但您可能会忘记一点。如果人的名字叫中间名,将导致错误。当用户键入两个以上的单词时,您将有2个数组位置,由于缺少位置(如足球运动员Kevin Prince Boateng)而导致文件意外结束。您可能需要查看此https://docs.python.org/2/c-api/memory.html来进行动态内存管理