import sys
print(sys.platform)
print(2**100)
raw_input()
Estoy usando Python 3.1 y no puedo hacer raw_input
que "congele" la ventana emergente de DOS. El libro que estoy leyendo es para Python 2.5 y estoy usando Python 3.1
¿Qué debo hacer para arreglar esto?
python
python-3.x
Precio de Lonnie
fuente
fuente
Respuestas:
Comenzando con Python 3,
raw_input()
se renombró ainput()
.De What's New In Python 3.0, segundo elemento de la sección Builtins .
fuente
input()
yraw_input()
.a = input()
tomará la entrada del usuario y la pondrá en el tipo correcto. Por ejemplo: si el usuario escribe 5, entonces el valor ena
es entero 5.a = raw_input()
tomará la entrada del usuario y la colocará como una cadena. Por ejemplo: si el usuario escribe 5, entonces el valor ena
es cadena '5' y no un entero. Pensé que podría ser una buena información para los novatos en Python como yo.Esto funciona en Python 3.xy 2.x:
fuente
global input
en la parte superior de la función de llamada.import __builtin__; input = getattr(__builtin__, 'raw_input', input)
__builtin__
.__builtin__
se renombrabuiltins
en Python 3. Ambos están disponibles como__builtins__
en CPython.getattr(__builtins__, 'raw_input', input)
devuelve el valor predeterminado cuando se importa en Python 2.7.2.Una forma confiable de abordar esto es
six es un módulo que repara muchos de los 2/3 puntos comunes de código base.
fuente
from six.moves import input as raw_input
, puede mantenerraw_input
su secuencia de comandos y ejecutar usando ambas versiones de Python.Como otros han indicado, la
raw_input
función ha sido renombradainput
en Python 3.0, y realmente sería mejor que recibiera un libro más actualizado, pero quiero señalar que hay mejores formas de ver el resultado de su script .Según su descripción, creo que está utilizando Windows, ha guardado un
.py
archivo y luego hace doble clic en él para ejecutarlo. La ventana de terminal que aparece se cierra tan pronto como finaliza su programa, por lo que no puede ver cuál fue el resultado de su programa. Para resolver esto, su libro recomienda agregar una declaraciónraw_input
/input
para esperar hasta que el usuario presione Intro. Sin embargo, como has visto, si algo sale mal, como un error en tu programa, esa declaración no se ejecutará y la ventana se cerrará sin que puedas ver qué salió mal. Es posible que le resulte más fácil usar un símbolo del sistema o IDLE.Use un símbolo del sistema
Cuando esté mirando la ventana de la carpeta que contiene su programa 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 debe contener una entrada "Abrir ventana de comandos aquí". (Creo que esto funciona en Windows Vista y Windows 7.) Esto abrirá una ventana de símbolo del sistema que se ve así:
Para ejecutar su programa, escriba lo siguiente (sustituyendo el nombre de su script):
... 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 programa termina de ejecutarse, ya sea que se complete con éxito o no, la ventana permanecerá abierto y el símbolo del sistema aparecerá nuevamente para que pueda escribir otro comando. Si desea ejecutar su programa nuevamente, puede presionar la flecha hacia arriba para recuperar el comando anterior que ingresó y presionar enter para ejecutarlo nuevamente, en lugar de tener que escribir el nombre del archivo cada vez.
Use IDLE
IDLE es un editor de programas simple que viene instalado con Python. Entre otras características, puede ejecutar sus programas en una ventana. Haga clic derecho en su
.py
archivo y elija "Editar en IDLE". Cuando su programa aparezca en el editor, presione F5 o elija "Ejecutar módulo" en el menú "Ejecutar". Su programa se ejecutará en una ventana que permanece abierta después de que finalice su programa, y en la que puede ingresar comandos de Python para que se ejecuten de inmediato.fuente
pythonw -m idlelib.idle
La solución de Timmerman funciona muy bien cuando se ejecuta el código, pero si no desea obtener
Undefined name
errores al usar pyflakes o un linter similar, puede usar lo siguiente:fuente
Redefining built-in 'input' (redefined-builtin)
,Unable to import '__builtin__' (import-error)
,Invalid constant name "input" (invalid-name)
.flake8
opyflakes
menos para no tomar todo el día con advertencias sin sentido.Aquí hay un fragmento de código que puse en mis scripts que quiero ejecutar en un entorno independiente de py2 / 3:
Ahora puede usar real_raw_input. Es bastante caro pero corto y legible. El uso de la entrada sin formato suele ser costoso (esperar la 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 mantenerse seguro.
fuente
Probablemente no sea la mejor solución, pero antes de venir, hice esto sobre la marcha para seguir trabajando sin tener un breve descanso del estudio.
Luego, cuando ejecuto
raw_input('Enter your first name: ')
el script en el que estaba trabajando, lo captura como loinput()
haría.¡Puede haber una razón para no hacer esto, que todavía no he encontrado!
fuente
raw_input = input
?