这是我的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
>>>
使用
raw_input
代替input
:)
如果您使用
,那么您的数据 类型被解释为 Python 表达这意味着你 最终得到了天啊知道什么类型 目标变量中的对象,以及 有各种各样的例外情况 可以生成的。所以你应该 NOT 使用input
除非你要放 用于临时测试的东西,以 只能由了解的人使用 关于 Python 表达式的一些知识。input
始终返回一个字符串 因为,哎呀,这就是你总是这样的 输入...然后您就可以轻松地 将其转换为您的特定类型 想要,并抓住具体的 可能发生的异常情况。希望 有了这个解释,这是一个 不用想就知道你应该做什么 使用。raw_input
注意:这仅适用于 Python 2。对于 Python 3,
raw_input()
已变为普通 input()
,并且 Python 2 input()
已被删除。
缩进!。这会照顾你的
SyntaxError
。
除此之外,您的程序中还存在其他一些问题。
当您想要接受字符串作为输入时,请使用
raw_input
。 input
仅接受 Python 表达式,并对它们执行 eval
。您在脚本中使用了某些 8 位字符,例如
0°
。您可能需要使用通常称为“coding-cookie”的 # -*- coding:latin-1 -*-
行在脚本顶部定义编码。此外,在进行 str 比较时,规范化字符串并进行比较。 (人们使用 lower() it)这有助于为用户输入提供很少的灵活性。
我也认为阅读Python教程可能对你有帮助。 :)
示例代码
#-*- coding: latin1 -*-
while 1:
date=raw_input("Example: March 21 | What is the date? ")
if date.lower() == "march 21":
....
我遇到了这个错误,因为一行中缺少右括号。
我一开始对这句话有疑问:
invalid syntax (<string>, line ...)?
在我的脚本的末尾。
我删除了该行,然后收到了 EOF 消息。
我使用以下代码来获得 Python 2 和 3 兼容性
if sys.version_info < (3, 0):
input = raw_input
虽然@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? ")
我试图回答一般性问题,与这个问题无关,当您将语法分成两半而忘记另一半时,通常会发生此错误。就像我的例子一样:
try :
....
因为 python 正在寻找
except Exception as e:
....
但它遇到了 EOF(文件结束),因此出现错误。看看您是否可以在代码中找到任何不完整的语法。
我遇到了同样的事情,我弄清楚了问题是什么。当我们使用方法输入时,我们应该输入的响应应该用双引号引起来。就像你的行一样
date=input("Example: March 21 | What is the date? ")
您应该在控制台提示“12/12/2015”时输入 - 请注意前后的
"
内容。这样它就会将其作为字符串并按预期进行处理。我不确定这是否是此 input
方法的限制 - 但它是这样工作的。
希望有帮助
在第一个 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 `
您可以尝试使用正常的
input
命令正常编写 Python 代码。然而,诀窍是在编程开始时添加命令input=raw_input
。
现在您所要做的就是禁用(或启用),具体取决于您是在 Python/IDLE 还是终端中运行。您只需在需要时添加“#”即可实现此目的。
在 Python/IDLE 中使用时关闭
#input=raw_input
当然,打开后可以在终端中使用。
input=raw_input
我不确定它是否总是有效,但它是简单程序或脚本的可能解决方案。
检查你的编译器版本。
n= raw_input("Enter your Input: ")
n= input("Enter your Input: ")