eof - python 解析时出现意外的EOF

这是我的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
>>> 

提前致谢!

时间:

使用raw_input而不是input :)

如果你使用input,那么你输入的数据被解释为python表达式,这意味着你的目标变量的类型,所以不应该使用input,除非在临时测试中使用某些内容,否则只能由一些知道python表达式的人使用。

因为raw_input总是返回字符串,因为这就是你总是输入的,但是,你可以轻松地将它转换为所需的特定类型,并捕捉可能发生的特定,希望用这种解释,你应该要知道你应该使用哪种方式。

引用: 这里 :)

缩进它第一。! 这将照顾你的SyntaxError

另外,你的程序中还有一些其他问题。

  • 当你想接受字符串作为输入时使用 raw_inputinput 只接受 python 表达式,它对它们执行 eval

  • 你在脚本中使用了某些 8bit 个字符,如 。 你可能需要在脚本的顶部定义编码,使用 # -*- 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":

. . ..

你可以尝试使用普通input命令将代码编写为正常的python ,然而,诀窍是在程序的开头添加命令input=raw_input

你只需在需要时添加'#'即可。

已关闭以便在python/idle中使用


 #input=raw_input 

在终端上使用开启。


 input=raw_input 

我遇到了同样的问题,我发现问题是什么。 当我们使用方法输入时,我们应该输入的响应应该是双引号。 在你的线条里 date=input("Example: March 21 | What is the date?")

你应该在控制台"12/12/2015"提示时键入 "的内容。 这种方式将把它当作一个字符串,并按预期处理。 我不确定这是否是这个 input 方法的限制- 但是它可以这样。

希望它可以帮助

...