SyntaxError:在Python中使用函数拆分时解析时的意外EOF

时间:2018-01-10 08:05:08

标签: python

我已经学过c和c ++,而我现在正在尝试学习python ......但是我遇到了一个我无法理解的问题......

a,b = input().split()
print(a)
print(b)

如果我执行这个简短的代码,“SyntaxError:解析时出现意外的EOF”这是我得到的错误消息......我已经查找了相同的错误消息的问题,但它没有解决我的问题..

为了理解这个问题,我尝试了各种各样的东西,我想到了一些我觉得有点奇怪的事情......

a = input()
print(a)

如果我执行此代码,当我输入一个整数值时它会很好用,但是当我输入一个字符串时,“SyntaxError:invalid syntax”会出现这种错误信息......

我做错了吗?或者有什么我不知道这使得这段代码在我确实错了的时候看起来完美无瑕?

1 个答案:

答案 0 :(得分:1)

这是你的代码:

$ cat a.py
a,b = input().split()
print(a)
print(b)

让我们先在python3下运行它:

$ python3 a.py 
1 2
1
2

1 2是我在提示符下输入的内容。)

这是在python2下运行的相同代码:

$ python2 a.py 
1 2
Traceback (most recent call last):
  File "a.py", line 1, in <module>
    a,b = input().split()
  File "<string>", line 1
    1 2
      ^
SyntaxError: unexpected EOF while parsing

这显示您报告的错误。

问题是input在python3中的含义与在python2中的含义不同。在python3下,input只是以字符串形式读入用户输入的内容。在python2下,input都读取用户输入对其进行评估。

为了使代码在python2下与python3下的代码相同,我们需要将input替换为raw_input

$ cat b.py
a,b = raw_input().split()
print(a)
print(b)

并观察:

$ python2 b.py
1 2
1
2

如果你有选择,你应该使用python3。 Python2即将临终。