解析时Python意外的EOF

Web*_*ner 77 python python-2.x 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
Run Code Online (Sandbox Code Playgroud)

这是发生的事情:

>>> 
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
>>> 
Run Code Online (Sandbox Code Playgroud)

sim*_*mon 108

raw_input而不是input:)

如果使用input,那么您键入的数据将被解释为Python表达式,这意味着您最终会知道gawd知道目标变量中的对象类型,以及可以生成的各种异常.因此,除非您正在进行临时测试,否则应该 使用input,只能由熟悉Python表达式的人使用.

raw_input总是返回一个字符串,因为,那就是你总是键入的内容......但是你可以轻松地将它转换为你想要的特定类型,并捕获可能发生的特定异常.希望通过这种解释,知道你应该使用哪个是明智的.

参考

注意:这仅适用于Python 2.对于Python 3,raw_input()已经变得简单input(),Python 2 input()已被删除.

  • 在 Mint 18.3(以及它所基于的 Ubuntu Xenial)中,`/usr/bin/python` 是 python 2 可执行文件,而 `/usr/bin/python3` 是 python 3 可执行文件。我相信,在 Mint 19 中,系统默认的 python 是 python 3。 (2认同)

Sen*_*ran 15

缩进它!第一.这会照顾你的SyntaxError.

除此之外,您的计划还有其他几个问题.

  • 使用raw_input时,你要接受字符串作为输入.input只接受Python表达式并对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":

    ....
Run Code Online (Sandbox Code Playgroud)

  • 除了纠正错字,这有什么帮助? (2认同)

JGF*_*FMK 7

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

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

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


Guh*_*uhh 5

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

if sys.version_info < (3, 0):
    input = raw_input
Run Code Online (Sandbox Code Playgroud)