xticks barplot python eof python-2.x

barplot - Python inesperado EOF durante el análisis



pandas plot (10)

Aquí está mi código python. ¿Podría alguien mostrarme lo que está mal con eso?

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 >>>


Después de la primera instrucción if en lugar de escribir "si", escriba "elif" y luego 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 `


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 una

except Exception as e: ....

pero encontró un EOF (Fin del archivo), de ahí el error. Vea si puede encontrar alguna sintaxis incompleta en su código.


Estoy usando el siguiente código para obtener compatibilidad con Python 2 y 3

if sys.version_info < (3, 0): input = raw_input


Lo que puedes probar es escribir tu código como normalmente para python usando el comando de input normal. Sin embargo, el truco es agregar al comienzo de tu programa el comando input=raw_input .

Ahora todo lo que tiene que hacer es deshabilitar (o habilitar) dependiendo de si se está ejecutando en Python / IDLE o Terminal. Usted hace esto simplemente agregando ''#'' cuando sea necesario.

Apagado para uso en Python / IDLE

#input=raw_input

Y, por supuesto, se enciende para su uso en la terminal.

input=raw_input

No estoy seguro si siempre funcionará, pero es una solución posible para programas simples o scripts.


Me encontré con lo mismo y descubrí cuál es el problema. Cuando usamos la entrada de método, la respuesta que debemos escribir debe estar entre comillas dobles. Al igual que en su línea date=input("Example: March 21 | What is the date? ")

Debe escribir cuando se le solicite en la consola "12/12/2015": tenga en cuenta lo " anterior y posterior. De esta manera lo tomará como una cadena y lo procesará como se esperaba. No estoy seguro de si esto es una limitación de este método de input - pero funciona de esta manera.

Espero eso ayude


Mientras que la respuesta de raw_input es más útil en Python 2, raw_input no está presente en Python 3. Sugeriría que haga lo siguiente para asegurarse de que su código funcione igual de bien en Python 2 y Python 3:

Primero, pip install future:

$ pip install future

Segundo: entrada importada de future.builtins

# my_file.py from future.builtins import input str_value = input(''Type something in: '')

Y para el ejemplo específico enumerado arriba:

# example.py from future.builtins import input my_date = input("Example: March 21 | What is the date? ")


Use raw_input lugar de la input :)

Si usa la input , entonces los datos que escribe se interpretan como una expresión de Python, lo que significa que termina con gawd sabe qué tipo de objeto en su variable objetivo, y una gran variedad de excepciones que se pueden generar. Por lo tanto, NO deberías utilizar la input menos que estés poniendo algo para pruebas temporales, para ser utilizado solo por alguien que conozca un poco sobre las expresiones de Python.

raw_input siempre devuelve una cadena porque, diablos, eso es lo que siempre raw_input ... pero luego puedes convertirlo fácilmente al tipo específico que quieras, y atrapar las excepciones específicas que puedan ocurrir. Afortunadamente con esa explicación, es obvio que debe saber cuál debe usar.

Reference

Nota: esto es solo para Python 2. Para Python 3, raw_input() ha convertido en input() simple input() y la input() Python 2 input() se ha eliminado.


Verifique si todos los parámetros de las funciones están definidos antes de llamarlos. Enfrenté este problema mientras practicaba Kaggle.


Sangúelo! primero. Eso se encargaría de su SyntaxError .

Aparte de eso, hay otros problemas en tu programa.

  • Use raw_input cuando quiera aceptar cadena como entrada. input solo toma expresiones de Python y realiza una eval en ellas.

  • Está utilizando ciertos caracteres de 8 bits en su secuencia de comandos como . Es posible que necesite definir la codificación en la parte superior de la secuencia de comandos mediante # -*- coding:latin-1 -*- línea comúnmente llamada como cookie de codificación.

  • Además, al hacer una comparación str, 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 podría ser útil para ti. :)

Código de muestra

#-*- coding: latin1 -*- while 1: date=raw_input("Example: March 21 | What is the date? ") if date.lower() == "march 21": ....


Tuve este error, debido a un paréntesis de cierre faltante en una línea.

Comencé teniendo un problema con una línea que decía: invalid syntax (<string>, line ...)? al final de mi script

Borré esa línea, luego obtuve el mensaje EOF.