Python raw_input
Funciones y métodos de Python
Michael Zippo
01.11.2021
Python 3 ha reemplazado el método raw_input ()
de Python 2 por el método input () . Si intenta utilizar raw_input ()
en Python 3, encontrará el NameError: name " raw_input " no está definido
error.
En esta guìa, vamos a discutir qué significa este error y por qué puede encontrarlo. Analizaremos un ejemplo de este error, con una soluciòn, para que pueda aprender a resolverlo.
NameError: name " raw_input " no está definido
La funciòn raw_input () en Python 2 recopila una entrada de un usuario. Esta entrada se puede convertir a cualquier tipo de datos, como una cadena, un entero o un n√∫mero de punto flotante.
Considere este còdigo:
username = raw_input (" Ingrese un nombre de usuario: ")
Podemos usar este còdigo para recopilar un nombre de usuario de un usuario en Python 2.
Poder recopilar una entrada de un usuario significa que puede hacer que sus programas sean interactivos. No solo necesita definir todos los datos en el programa que va a utilizar. Puede pedirle a un usuario que proporcione algunos datos.
En Python 3, se han realizado muchos cambios en el lenguaje Python. Entre ellos se encuentra raw_input ()
que se renombrò a input ()
. Ambas funciones recopilan un fragmento de datos de sys.stdin
(también conocido como " entrada estándar ") y devuelven esos datos a un programa.
Un ejemplo de escenario
Vamos a crear un programa que calcule la calificaciòn que un estudiante ha obtenido en su tarea de arte. La tarea es de 50 y los estudiantes pueden recibir una calificaciòn de A, B, C o suspenso. Para comenzar, pidamos a nuestro usuario que inserte una calificaciòn cuya calificaciòn en letras calcularemos:
numerical_grade = int (raw_input (" Ingrese una calificaciòn: "))
Usamos raw_input ()
para recopilar una calificaciòn del usuario. El usuario debe ingresar una calificaciòn en nuestro programa antes de que se ejecute el resto de nuestro programa. Nosotros convierte el valor que ingresa un usuario en un n√∫mero entero para que podamos realizar comparaciones numéricas más adelante en nuestro còdigo. Esto se debe a que raw_input ()
devuelve una cadena por defecto.
Vamos a utilizar una declaraciòn if para calcular la calificaciòn de la letra correspondiente:
Usamos uno si, dos elif, y una declaraciòn más para calcular la calificaciòn en letras que un estudiante ha obtenido en funciòn de la calificaciòn numérica que el usuario ha insertado en el programa.
Nuestro paso final es imprime un mensaje en la consola informando al usuario de los resultados de nuestro cálculo:
Esta declaraciòn mostrará tanto la calificaciòn numérica como la letra que ha obtenido un alumno.
Ejecutemos nuestro còdigo y veamos qué sucede:
Nuestro còdigo devuelve un error.
La soluciòn < / h2>
El mensaje de error nos dice que estamos haciendo referencia a un valor que no existe. Debido a que estamos usando Python 3.x para ejecutar nuestro programa, raw_input ()
no existe.
Para arreglar nuestro còdigo, necesitamos reemplazar nuestro declaraciòn raw_input ()
con una declaraciòn input ()
:
Tanto las declaraciones raw_input () como input () son funcionalmente iguales. Esto significa que no necesitamos hacer más cambios en nuestro còdigo para que nuestra base de còdigo sea compatible con Python 3.x.
Ejecutemos nuestro programa con este cambio realizado:
Nuestro còdigo calcula con éxito la calificaciòn de un estudiante.
Una nota sobre la reasignaciòn de la funciòn raw_input < / h2>
Una soluciòn que técnicamente funciona es asignar el valor de raw_input ()
a la funciòn input ()
. Podemos hacer esto usando asignaciòn de variables . Esto le permitirá usar una funciòn llamada raw_input ()
en su còdigo Python 3.
Considere este ejemplo:
raw_input = input
Esta declaraciòn le dice a Python que el valor de raw_input ()
debe ser igual a input ()
.
Esta no es una buena soluciòn porque la documentaciòn oficial de Python 3 eliminò el nombre raw_input ()
en favor de input ()
. Algunos desarrolladores que lean su còdigo pueden confundirse si ven raw_input ()
en una base de còdigo Python 3, lo que ralentiza el tiempo de desarrollo.
Conclusiòn
El NameError: nombre " raw_input " no está definido
se genera un error cuando intenta utilizar el método raw_input () en Python 3. Para corregir este error, reemplace todas las instancias de raw_input () con la funciòn input () en su programa.
¬°Ahora tiene el conocimiento que necesita para corregir este error como un programador profesional de Python!