Python 解析时出现意外的 EOF [重复]
- 2025-02-18 09:25:00
- admin 原创
- 37
问题描述:
这是我的 Python 代码。有人能告诉我它有什么问题吗?
while 1:
date=input("Example: March 21 | What is the date? ")
if date=="June 21":
sd="23.5° North Latitude"
if date=="March 21" | date=="September 21":
sd="0° Latitude"
if date=="December 21":
sd="23.5° South Latitude"
if sd:
print sd
接下来发生的事情如下:
>>>
Example: March 21 | What is the date?
Traceback (most recent call last):
File "C:UsersDanielDesktopSolar Declination Calculater.py", line 2, in <module>
date=input("Example: March 21 | What is the date? ")
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
>>>
解决方案 1:
使用raw_input
而不是input
:)
如果您使用
input
,那么您输入的数据将被解释为Python 表达式,这意味着您最终会知道目标变量中的对象类型,并且可能会生成大量异常。因此,
除非您要放入某些内容进行临时测试,否则不应使用input
,只有对 Python 表达式有所了解的人才能使用。
raw_input
总是返回一个字符串,因为,哎呀,这就是你总是输入的内容……但你可以轻松地将其转换为你想要的特定类型,并捕获可能发生的特定异常。希望通过这样的解释,你能够轻而易举地知道应该使用哪一个。
参考
注意:这仅适用于 Python 2。对于 Python 3,raw_input()
已变得简单input()
并且 Python 2input()
已被删除。
解决方案 2:
首先缩进!这样可以解决你的问题SyntaxError
。
除此之外,您的程序中还有其他一些问题。
raw_input
当您想要接受字符串作为输入时使用。input
仅接受 Python 表达式并对其执行操作eval
。您在脚本中使用了某些 8 位字符,例如
0°
。您可能需要在脚本顶部使用# -*- coding:latin-1 -*-
通常称为 coding-cookie 的行来定义编码。另外,在进行 str 比较时,对字符串进行规范化并进行比较。(人们使用 lower() 它)这有助于降低用户输入的灵活性。
我还认为阅读 Python 教程可能会对您有帮助。:)
示例代码
#-*- coding: latin1 -*-
while 1:
date=raw_input("Example: March 21 | What is the date? ")
if date.lower() == "march 21":
....
解决方案 3:
我遇到了这个错误,因为一行中缺少一个右括号。
invalid syntax (<string>, line ...)?
我一开始对脚本末尾的一行字感到困惑
。
我删除了该行,然后收到了 EOF 消息。
解决方案 4:
我正在使用以下代码来获得 Python 2 和 3 兼容性
if sys.version_info < (3, 0):
input = raw_input
解决方案 5:
虽然 @simon 的答案在 Python 2 中最有帮助,但raw_input
在 Python 3 中却不存在。我建议执行以下操作以确保您的代码在 Python 2 和 Python 3 中同样有效:
首先,pip install future:
$ pip install future
第二:从 future.builtins 导入输入
# my_file.py
from future.builtins import input
str_value = input('Type something in: ')
对于上面列出的具体例子:
# example.py
from future.builtins import input
my_date = input("Example: March 21 | What is the date? ")
解决方案 6:
我试图回答一般性问题,与这个问题无关,这个错误通常发生在您将语法分成两半并忘记另一半时。就像我的情况一样:
try :
....
因为 python 正在寻找一个
except Exception as e:
....
但遇到了 EOF(文件结束符),因此出现错误。看看你的代码中是否有不完整的语法。
解决方案 7:
我遇到了同样的问题,我弄清楚了问题所在。当我们使用方法输入时,我们应该输入的响应应该用双引号引起来。就像你那行date=input("Example: March 21 | What is the date? ")
您应该在控制台提示时输入“12/12/2015” - 注意"
前后的内容。这样它就会将其作为字符串并按预期进行处理。我不确定这是否是此input
方法的局限性 - 但它就是这样工作的。
希望有帮助
解决方案 8:
在第一个 if 语句之后,不要输入“if”,而是输入“elif”,然后它应该可以工作。
前任。
` while 1:
date=input("Example: March 21 | What is the date? ")
if date=="June 21":
sd="23.5° North Latitude
elif date=="March 21" | date=="September 21":
sd="0° Latitude"
elif date=="December 21":
sd="23.5° South Latitude"
elif sd:
print sd `
解决方案 9:
您可以尝试使用常规命令像往常一样为 Python 编写代码input
。不过,诀窍是在程序开头添加命令input=raw_input
。
现在您要做的就是根据您是在 Python/IDLE 还是终端中运行来禁用(或启用)。您只需在需要时添加“#”即可。
在 Python/IDLE 中关闭使用
#input=raw_input
当然,也可以在终端中使用。
input=raw_input
我不确定它是否总是有效,但它对于简单的程序或脚本来说是一个可能的解决方案。
解决方案 10:
检查你的编译器的版本。
如果你正在处理 Python2,那么使用 -
n= raw_input("Enter your Input: ")
如果你正在处理 python3,请使用 -
n= input("Enter your Input: ")
- 2025年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)