2011-02-17 9 views
9

tengo el siguiente código Python:¿Por qué input() da un error cuando solo presiono enter?

print 'This is a simple game.' 
input('Press enter to continue . . .') 
print 'Choose an option:' 

... 

Pero cuando se presiona el botón Introduzca, me sale el siguiente error:

Traceback (most recent call last): 
    File "E:/4.Python/temp.py", line 2, in <module> 
    input('Press enter to continue . . .') 
    File "<string>", line 0 

^
SyntaxError: unexpected EOF while parsing 

P. S. Estoy utilizando Python IDLE versión 2.6 en Windows 7.

Respuesta

22

Para Python 2, quiere raw_input, no input. El primero leerá una línea. Este último leerá una línea e intentará ejecutarla, lo cual no es aconsejable si no desea que la persona que ingresa los datos corrompa el código.

Por ejemplo, se podría hacer algo como funciones arbitrarias de llamadas, según el siguiente ejemplo:

def sety99(): 
    global y 
    y = 99 

y = 0 
input ("Enter something: ") 
print y 

Si ejecuta el código bajo Python 2 y entrar sety99(), la salida se 99, a pesar del hecho de que en ningún momento su código (en su flujo de ejecución normal) establece intencionalmente y a nada que no sea cero (lo hace en la función pero su función nunca es llamada explícitamente por su código). La razón para esto es que la llamada input(prompt) es equivalente a eval(raw_input(prompt)).

Ver here para los detalles sangrientos.

Tenga en cuenta que Python 3 corrige esto. El input function there se comporta como era de esperar.

+0

+1 para el ejemplo :-) – user225312

+1

En realidad, no se puede * asignar * nada en 'eval'. Sin embargo, puedes llamar al método destructivo que quieras, por lo que no es mucho mejor. – delnan

+0

O bien, desea utilizar Python 3, donde 'input()' hace lo que Python 2 'raw_input()' hizo. –

5

En Python 2, input() se evalúan las cadenas, y si están vacías, se genera una excepción. Probablemente desee raw_input() (o pase a Python 3).

4

En Python 2.x, input() es equivalente a eval(raw_input()). Y eval da un error de sintaxis cuando le pasa una cadena vacía.

Quiere usar raw_input() en su lugar.

2

Si usa input en Python 2.x, se interpreta como una expresión de Python, que no es lo que desea. Y dado que en su caso, la cadena está vacía, se genera un error.

Lo que necesita es raw_input. Úselo y devolverá una cadena.

Cuestiones relacionadas