Aquí está mi código de Python. ¿Podría alguien mostrarme qué tiene de malo?
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
Y esto es lo que sucede:
>>>
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
>>>
fuente
/usr/bin/python
es un ejecutable de Python 2, y/usr/bin/python3
es su ejecutable de Python 3. Con Mint 19, creo que el python predeterminado del sistema es python 3.¡Ponle sangría! primero. Eso se haría cargo de tu
SyntaxError
.Aparte de eso, hay un par de otros problemas en su programa.
Úselo
raw_input
cuando desee aceptar una cadena como entrada.input
solo toma expresiones de Python y las aplicaeval
.Estás usando ciertos caracteres de 8 bits en tu script como
0°
. Es posible que deba definir la codificación en la parte superior de su secuencia de comandos utilizando la# -*- coding:latin-1 -*-
línea comúnmente llamada coding-cookie.Además, mientras realiza la comparación de cadenas, normalice las cadenas y compare. (personas que usan lower () it) Esto ayuda a dar poca flexibilidad con la entrada del usuario.
También creo que leer el tutorial de Python puede resultarle útil. :)
Código de muestra
#-*- coding: latin1 -*- while 1: date=raw_input("Example: March 21 | What is the date? ") if date.lower() == "march 21": ....
fuente
Tuve este error porque faltaba un paréntesis de cierre en una línea.
Empecé a tener un problema con una línea que decía:
invalid syntax (<string>, line ...)?
al final de mi guión.Eliminé esa línea y luego recibí el mensaje EOF.
fuente
Si bien la respuesta de @ simon es más útil en Python 2,
raw_input
no está presente en Python 3. Sugeriría hacer lo siguiente para asegurarse de que su código funcione igualmente bien en Python 2 y Python 3:Primero, pip install future:
Segundo: importar entrada de future.builtins
# my_file.py from future.builtins import input str_value = input('Type something in: ')
Y para el ejemplo específico mencionado anteriormente:
# example.py from future.builtins import input my_date = input("Example: March 21 | What is the date? ")
fuente
Estoy usando el siguiente código para obtener compatibilidad con Python 2 y 3
if sys.version_info < (3, 0): input = raw_input
fuente
Estoy tratando de responder en general, no relacionado con esta pregunta, este error generalmente ocurre cuando se divide una sintaxis por la mitad y se olvida la otra mitad. Como en mi caso fue:
try : ....
ya que Python estaba buscando un
except Exception as e: ....
pero encontró un EOF (Fin de archivo), de ahí el error. Vea si puede encontrar alguna sintaxis incompleta en su código.
fuente
Me encontré con lo mismo y descubrí cuál es el problema. Cuando usamos la entrada del método, la respuesta que debemos escribir debe estar entre comillas dobles. Como en tu linea
date=input("Example: March 21 | What is the date? ")
Debería escribir cuando se le solicite en la consola "12/12/2015" - tenga en cuenta el
"
antes y el después. De esta manera, lo tomará como una cadena y lo procesará como se espera. No estoy seguro de si esto es una limitación de esteinput
método, pero funciona de esta manera.Espero eso ayude
fuente
Después de la primera instrucción if en lugar de escribir "if", escriba "elif" y entonces debería funcionar.
Ex.
` 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 `
fuente
Lo que puede intentar es escribir su código normalmente para Python usando el
input
comando normal . Sin embargo, el truco consiste en agregar el comando al principio de la programacióninput=raw_input
.Ahora todo lo que tiene que hacer es deshabilitar (o habilitar) dependiendo de si está ejecutando en Python / IDLE o Terminal. Puede hacer esto simplemente agregando '#' cuando sea necesario.
Apagado para usar en Python / IDLE
#input=raw_input
Y, por supuesto, encendido para su uso en terminal.
No estoy seguro de si siempre funcionará, pero es una posible solución para programas o scripts simples.
fuente
Compruebe si todos los parámetros de las funciones están definidos antes de llamarlos. Enfrenté este problema mientras practicaba Kaggle.
fuente