Quiero obtener una cadena de un usuario y luego manipularla.
testVar = input("Ask user for something.")
¿Hay alguna manera de que testVar sea una cadena sin que el usuario escriba su respuesta entre comillas? es decir, "Hola" vs. Hola
Si el usuario escribe Hola, me sale el siguiente error:
NameError: el nombre 'Hola' no está definido
python
string
python-2.7
Mike Lee
fuente
fuente
input
, las llamadas seeval()
Respuestas:
Usar en
raw_input()
lugar deinput()
:input()
en realidad evalúa la entrada como código Python. Sugiero nunca usarlo.raw_input()
devuelve la cadena literal ingresada por el usuario.fuente
input
ahora funciona de esta manera, y raw_input se ha ido.input()
sea una función útil, y no recomiendo usarla.La función
input
también evaluará los datos que acaba de leer como código python, que no es realmente lo que desea.El enfoque genérico sería tratar la entrada del usuario (desde
sys.stdin
) como cualquier otro archivo. TratarSi desea que sea breve, puede usar el
raw_input
que es igualinput
pero omite la evaluación.fuente
readline
: esto le dará características similares a bash (el historial fuera de la caja, la finalización automática requerirá algo de trabajo preliminar)Podemos usar la
raw_input()
función en Python 2 y lainput()
función en Python 3. Por defecto, la función de entrada toma una entrada en formato de cadena. Para otro tipo de datos, debe emitir la entrada del usuario.En Python 2 usamos la
raw_input()
función. Espera a que el usuario escriba algo de entrada y presionereturn
y necesitamos almacenar el valor en una variable al convertirlo como nuestro tipo de datos deseado. Tenga cuidado al usar el tipo de fundiciónEn Python 3 usamos la función input () que devuelve un valor de entrada de usuario.
Si ingresa una cadena, int, float, eval tomará como entrada de cadena
Si ingresas una cadena para int cast
ValueError: invalid literal for int() with base 10:
Si ingresa una cadena para el molde flotante
ValueError: could not convert string to float
Si ingresa una cadena para eval cast
NameError: name ' ' is not defined
Esos errores también se aplican a Python 2.fuente
Si desea usar input en lugar de raw_input en python 2.x, entonces este truco será útil
Después de lo cual,
funcionará bien.
fuente
fuente
Mi código de trabajo con correcciones:
fuente
Este es mi trabajo para evitar fallas en caso de que necesite moverme a Python 3 en el futuro.
fuente
El problema parece resolverse en Python versión 3.4.2.
Funcionará bien
fuente
input
es equivalente a Python 2.xraw_input
(ver docs.python.org/3.0/whatsnew/3.0.html#builtins ); Este es un problema específico de 2.x.