84

这是我的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:\Users\Daniel\Desktop\Solar 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
>>> 
4

11 回答 11

125

使用raw_input代替input:)

如果您使用input,那么您输入的数据将被解释为Python 表达式,这意味着您最终会知道目标变量中的对象类型,以及可以生成的大量异常。因此, 除非您将某些东西用于临时测试,否则您应该使用它,只有对 Python 表达式有所了解的人才能使用。input

raw_input总是返回一个字符串,因为,哎呀,这就是你总是输入的......但是你可以轻松地将它转换为你想要的特定类型,并捕获可能发生的特定异常。希望有了这个解释,知道你应该使用哪个是不费吹灰之力的。

参考

注意:这仅适用于 Python 2。对于 Python 3,raw_input()已变得普通input()并且 Python 2input()已被删除。

于 2011-02-22T05:08:34.090 回答
16

缩进它!第一的。那会照顾你的SyntaxError

除此之外,您的程序中还有其他几个问题。

  • raw_input当您想要接受字符串作为输入时使用。input只接受 Python 表达式,并对它们执行 an eval

  • 您在脚本中使用了某些 8 位字符,例如. # -*- 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":

    ....
于 2011-02-22T05:06:47.660 回答
7

我有这个错误,因为一行缺少右括号。

我开始遇到一个问题: invalid syntax (<string>, line ...)? 在我的脚本末尾。

我删除了那行,然后收到了 EOF 消息。

于 2018-04-26T18:48:29.587 回答
4

虽然@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? ")
于 2016-04-01T00:26:36.427 回答
4

我正在使用以下代码来获得 Python 2 和 3 的兼容性

if sys.version_info < (3, 0):
    input = raw_input
于 2017-09-20T03:29:53.890 回答
3

我试图一般地回答,与这个问题无关,这个错误通常发生在你将语法分成两半并忘记另一半时。就像我的情况一样:

try :
 ....

因为 python 正在寻找一个

except Exception as e:
 ....

但它遇到了 EOF(文件结尾),因此出现了错误。看看您是否可以在代码中找到任何不完整的语法。

于 2017-09-02T19:17:18.803 回答
1

我遇到了同样的事情,我想出了问题所在。当我们使用方法输入时,我们应该输入的响应应该用双引号引起来。就像在你的行中 date=input("Example: March 21 | What is the date? ")

您应该在控制台“2015 年 12 月 12 日”出现提示时输入 - 请注意"之前和之后的内容。这样,它将把它作为一个字符串并按预期处理它。我不确定这是否是这种input方法的限制——但它是这样工作的。

希望能帮助到你

于 2015-02-22T08:46:08.753 回答
1

在第一个 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 `
于 2016-06-06T00:04:16.520 回答
0

input您可以尝试使用普通命令为 python 编写代码。然而,诀窍是在您编写命令的开头添加input=raw_input

现在您所要做的就是禁用(或启用)取决于您是在 Python/IDLE 还是终端中运行。您只需在需要时添加“#”即可。

关闭以在 Python/IDLE 中使用

    #input=raw_input 

当然也可以在终端中使用。

    input=raw_input 

我不确定它是否总是有效,但它是简单程序或脚本的可能解决方案。

于 2013-06-23T16:21:17.807 回答
0

Check the version of your Compiler.

  1. if you are dealing with Python2 then use -

n= raw_input("Enter your Input: ")

  1. if you are dealing with python3 use -

n= input("Enter your Input: ")

于 2021-01-01T05:04:38.120 回答
-2

检查函数的所有参数是否在调用之前都已定义。我在练习 Kaggle 时遇到了这个问题。

于 2016-09-17T10:47:11.987 回答