¿Cómo uso raw_input en Python 3?

import sys print(sys.platform) print(2**100) raw_input() 

Estoy usando Python 3.1 y no puedo hacer que el raw_input “congele” la raw_input emergente de DOS. El libro que estoy leyendo es para Python 2.5 y estoy usando Python 3.1

¿Qué debo hacer para solucionar esto?

raw_input() fue renombrado a input()

De http://docs.python.org/dev/py3k/whatsnew/3.0.html

Esto funciona en Python 3.xy 2.x:

 # Fix Python 2.x. try: input = raw_input except NameError: pass print("Hi " + input("Say something: ")) 

Una forma confiable de abordar esto es

 from six.moves import input 

seis es un módulo que repara muchos de los puntos de dolor de base de código común 2/3.

En Python 3.xx solo necesitas input() no raw_input()

Como otros lo han indicado, la función raw_input ha sido renombrada a input en Python 3.0, y realmente le serviría un libro más actualizado, pero quiero señalar que hay mejores maneras de ver el resultado de tu guion

Desde su descripción, creo que está usando Windows, ha guardado un archivo .py y luego hace doble clic en él para ejecutarlo. La ventana de terminal que aparece se cierra tan pronto como finaliza su progtwig, por lo que no puede ver cuál fue el resultado de su progtwig. Para resolver esto, su libro recomienda agregar una raw_input / input para esperar hasta que el usuario presione. Sin embargo, como ha visto, si algo sale mal, como un error en su progtwig, esa statement no se ejecutará y la ventana se cerrará sin que usted pueda ver lo que salió mal. Es posible que le resulte más fácil usar un indicador de comando o IDLE.

Utilice un indicador de comando

Cuando esté mirando la ventana de la carpeta que contiene su progtwig Python, mantenga presionada la tecla Mayús y haga clic con el botón derecho en cualquier parte del área de fondo blanco de la ventana. El menú que aparece debería contener una entrada “Abrir ventana de comandos aquí”. (Creo que esto funciona en Windows Vista y Windows 7.) Esto abrirá una ventana del símbolo del sistema que se ve así:

  Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\Weeble\My Python Program>_ 

Para ejecutar su progtwig, escriba lo siguiente (sustituyendo el nombre de su script):

  python myscript.py 

… y presiona enter. (Si recibe un error de que “python” no es un comando reconocido, consulte http://showmedo.com/videotutorials/video?name=960000&fromSeriesID=96 ) Cuando su progtwig termina de ejecutarse, ya sea que se complete con éxito o no, la ventana permanecerá abierto y volverá a aparecer el símbolo del sistema para que escriba otro comando. Si desea ejecutar su progtwig nuevamente, puede presionar la flecha hacia arriba para recuperar el comando anterior que ingresó y presionar intro para ejecutarlo nuevamente, en lugar de tener que escribir el nombre del archivo cada vez.

Usar IDLE

IDLE es un editor de progtwigs simple que viene instalado con Python. Entre otras características puede ejecutar tus progtwigs en una ventana. Haga clic derecho en su archivo .py y elija “Editar en IDLE”. Cuando su progtwig aparezca en el editor, presione F5 o elija “Ejecutar módulo” en el menú “Ejecutar”. Su progtwig se ejecutará en una ventana que permanece abierta después de que finalice su progtwig, y ​​en la que puede ingresar comandos de Python para ejecutarse de inmediato.

La solución de Timmerman funciona muy bien cuando se ejecuta el código, pero si no desea obtener errores de Undefined name definidos al usar pyflakes o una impresora similar, puede usar lo siguiente:

 try: import __builtin__ input = getattr(__builtin__, 'raw_input') except (ImportError, AttributeError): pass 

Aquí hay un fragmento de código que puse en mis scripts que no debería ejecutar en el entorno py2 / 3-agnostic:

 # Thank you, python2-3 team, for making such a fantastic mess with # input/raw_input :-) real_raw_input = vars(__builtins__).get('raw_input',input) 

Ahora puedes usar real_raw_input. Es bastante caro pero corto y legible. El uso de entrada sin formato suele ser costoso (en espera de entrada), por lo que no es importante

En teoría, incluso puede asignar raw_input en lugar de real_raw_input, pero puede haber módulos que verifiquen la existencia de raw_input y se comporten en consecuencia. Es mejor permanecer en el lado seguro.

Probablemente no sea la mejor solución, pero antes de venir aquí, simplemente hice esto sobre la marcha para seguir trabajando sin tener un breve descanso del estudio.

 def raw_input(x): input(x) 

Luego, cuando ejecuto raw_input('Enter your first name: ') en el script en el que estaba trabajando, lo captura como lo hace input() .

¡Puede haber una razón para no hacer esto, que no haya encontrado todavía!