- 1 1. Introducción
- 2 2. Uso básico de la función input() en Python [Para principiantes]
- 3 3. Cómo recibir múltiples entradas en Python [Usando split/bucle]
- 4 4. Manejo de errores en la entrada [Uso de try-except]
- 5 5. Edición avanzada: Procesamiento de entrada avanzado
- 6 6. Compatibilidad con Python 2 (Información complementaria)
- 7 7. Resumen
1. Introducción
Python es un lenguaje de programación que combina una sintaxis simple con funciones potentes, y es utilizado por una amplia gama de desarrolladores, desde principiantes hasta avanzados. En particular, la función de recibir entrada del usuario es indispensable para crear programas interactivos.
Este artículo explica en detalle cómo recibir entrada del usuario en Python. Desde el uso básico de la función input()
, hasta la conversión numérica, el procesamiento de múltiples entradas, el manejo de errores y el procesamiento avanzado de entradas, cubriendo todo de manera que sea fácil de entender para lectores desde principiantes hasta intermedios.
Al leer este artículo, adquirirás los siguientes conocimientos:
- El uso básico de la función
input()
de Python - Métodos para entrada de cadenas y conversión numérica
- Métodos para recibir múltiples valores
- Procesamiento de errores en la entrada (try-except)
- Procesamiento avanzado de entradas (entrada de archivo, argumentos de línea de comandos, entrada de contraseña)
¡Comprende bien el mecanismo de entrada de usuario en Python y aprende a crear programas prácticos!
2. Uso básico de la función input()
en Python [Para principiantes]
Como método para recibir entrada del usuario en Python, la función más básica es input()
. Al usar esta función, se puede obtener los datos ingresados por el usuario durante la ejecución del programa y almacenarlos en una variable.
En esta sección, se explica el funcionamiento básico de la función input()
, así como cómo manejar cadenas y números.
2.1 Uso básico de la función input()
Al usar la función input()
, se puede mostrar un mensaje al usuario en la consola (terminal) y recibir su entrada. A continuación, se muestra el ejemplo más simple de uso de input()
.
name = input("Por favor, ingrese su nombre: ")
print(f"¡Hola, {name}!")
Ejemplo de resultado de ejecución
Por favor, ingrese su nombre: Tarō
¡Hola, Tarō!
Mecanismo de funcionamiento
- Cuando se ejecuta
input("Por favor, ingrese su nombre: ")
, el programa se pausa hasta que el usuario ingrese algo. - Cuando el usuario ingresa y presiona la tecla Enter, ese valor se almacena en la variable
name
como una cadena (tipo str). - Se puede mostrar el contenido ingresado en la pantalla usando la función
print()
.
2.2 Cómo recibir números con input()
(conversión de tipo)
Los datos obtenidos con la función input()
siempre son una cadena (tipo str). Por ejemplo, aunque se ingrese un número, se trata como una cadena tal cual.
Ejemplo: Ingresar un número tal cual
age = input("Por favor, ingrese su edad: ")
print(type(age)) # str (tipo cadena)
Resultado de ejecución
Por favor, ingrese su edad: 25
<class 'str'="">
En el ejemplo anterior, input()
obtiene age
como “25” (cadena de tipo str), no como un número.
Si se desea tratarlo como un número, es necesario realizar una conversión de tipo.
Conversión a entero (tipo int)
Para recibir una entrada como entero, se usa la función int()
.
age = int(input("Por favor, ingrese su edad: "))
print(f"Tienes {age} años.")
Resultado de ejecución
Por favor, ingrese su edad: 25
Tienes 25 años.
Al usar int()
, el valor ingresado por el usuario se trata como un entero (tipo int).
Conversión a decimal (tipo float)
Para ingresar decimales, se usa la función float()
.
height = float(input("Por favor, ingrese su altura (cm): "))
print(f"Tu altura es {height} cm.")
Resultado de ejecución
Por favor, ingrese su altura (cm): 170.5
Tu altura es 170.5 cm.
Al usar float()
, se puede procesar correctamente números con punto decimal.
2.3 Puntos de atención y errores con input()
Al realizar la conversión de tipo con int()
o float()
, si el usuario ingresa datos que no son números, se produce un error.
Ejemplo en el que ocurre un error
age = int(input("Por favor, ingrese su edad: "))
Por favor, ingrese su edad: abc
Traceback (most recent call last):
File "", line 1, in
ValueError: invalid literal for int() with base 10: 'abc'
Se produce un error ValueError
y el programa se cierra.
Para evitar este problema, es necesario implementar manejo de errores (procesamiento de excepciones). El manejo de errores se explica en detalle en secciones posteriores.
2.4 Resumen
- La función
input()
es la función básica para obtener entrada del usuario. - Los datos obtenidos con
input()
siempre se tratan como una cadena (tipo str). - Para ingresar números, realizar la conversión de tipo con
int()
ofloat()
. - Al usar
int()
ofloat()
, prestar atención a los errores de entrada y es deseable implementar manejo de errores.
3. Cómo recibir múltiples entradas en Python [Usando split/bucle]
En Python, es posible recibir múltiples valores en una sola entrada. En particular, hay métodos convenientes para obtener datos en forma de lista o para recibir entradas repetidas. En esta sección, explicamos el método usando split()
y el método de entrada de múltiples líneas utilizando bucles.
3.1 Usando split()
para ingresar múltiples valores en una línea
Normalmente, al recibir la entrada del usuario con input()
, se trata como una sola cadena. Sin embargo, utilizando split()
, es posible obtener múltiples valores separados por espacios y procesarlos como una lista.
Ejemplo de uso básico
values = input("Ingrese múltiples valores separados por espacios: ").split()
print("Valores ingresados:", values)
Ejemplo de ejecución
Ingrese múltiples valores separados por espacios: 10 20 30 40
Valores ingresados: ['10', '20', '30', '40']
Mecanismo de funcionamiento
- Se obtiene la cadena ingresada por el usuario mediante
input()
. - Utilizando
.split()
, se convierte en una lista separada por espacios (predeterminado). - Como resultado, los valores se almacenan como una lista.
Con este método, es posible recibir datos de longitud variable del usuario.
3.2 Combinando split()
con conversión de tipos
En el método anterior, todos los valores ingresados son cadenas (tipo str). Si se desea procesarlos como números, es necesario convertir cada elemento de la lista al tipo adecuado.
Ejemplo: Procesar como números
numbers = list(map(int, input("Ingrese enteros separados por espacios: ").split()))
print("Suma de los enteros:", sum(numbers))
Ejemplo de ejecución
Ingrese enteros separados por espacios: 5 10 15 20
Suma de los enteros: 50
Explicación
- Después de convertir en lista con
input().split()
, se utilizamap(int, ...)
para convertir cada elemento a entero (tipo int). - Se convierte el resultado de
map
en lista conlist()
. - Se calcula la suma utilizando la función
sum()
.
Este método es muy conveniente para procesar múltiples números de una vez.
3.3 Recibiendo entradas de múltiples líneas usando un bucle while
El método con split()
solo procesa una línea de entrada. Sin embargo, si se desea que el usuario ingrese datos de múltiples líneas, se puede manejar de manera flexible utilizando un bucle while
.
Método para recibir entradas de múltiples líneas
lines = []
print("Ingrese los datos (para finalizar, ingrese una línea vacía):")
while True:
line = input()
if line == "": # Si se ingresa una línea vacía, finalizar
break
lines.append(line)
print("Datos ingresados:", lines)
Ejemplo de ejecución
Ingrese los datos (para finalizar, ingrese una línea vacía):
manzana
banana
naranjaDatos ingresados: ['manzana', 'banana', 'naranja']
Explicación
- Se crea un bucle infinito utilizando
while True
. - El usuario ingresa valores con
input()
. - Cuando se ingresa una línea vacía (
""
), se sale del bucle conbreak
. - Todas las entradas se almacenan en la lista
lines
.
Con este método, el usuario puede ingresar un número libre de datos.
3.4 Recibiendo entradas un número fijo de veces usando un bucle for
Si se desea recibir entradas un número específico de veces, es conveniente usar un bucle for
.
Ejemplo: Recibir 3 entradas
data = []
for i in range(3):
value = input(f"Entrada {i+1}: ")
data.append(value)
print("Datos ingresados:", data)
Ejemplo de ejecución
Entrada 1: Python
Entrada 2: Java
Entrada 3: C++
Datos ingresados: ['Python', 'Java', 'C++']
Puntos clave
- Al usar un bucle
for
, se puede especificar claramente el número de entradas. - Mostrar el número de entrada como en
f"{i+1} entrada"
facilita la comprensión para el usuario.
3.5 Resumen
Método | Descripción | Ventajas |
---|---|---|
split() Uso | Convertir entrada de una línea en lista | Fácil recepción de múltiples valores |
split() + conversión de tipos | Convertir entrada numérica en lista | Facilita el procesamiento numérico |
while bucle | Recibir entradas de múltiples líneas | Posible configurar libremente el número de entradas |
for bucle | Recibir entradas un número fijo de veces | Control claro del número de repeticiones |

4. Manejo de errores en la entrada [Uso de try-except]
En Python, al recibir entrada del usuario, puede haber valores inesperados. Por ejemplo, si se pide un número pero se ingresa una cadena, el programa genera un error y se detiene. Para evitar esto, es importante implementar el manejo de errores usando try-except
.
En esta sección, se explica el uso básico de try-except
y métodos prácticos de manejo de errores.
4.1 Uso básico de try-except
En Python, usando try-except
, se puede procesar adecuadamente el programa cuando ocurre un error (excepción).
Ejemplo básico
try:
num = int(input("Ingrese un entero: "))
print(f"Entero ingresado: {num}")
except ValueError:
print("Error: ¡Ingrese un entero!")
Ejemplo de ejecución
Ingrese un entero: 10
Entero ingresado: 10
Ingrese un entero: abc
Error: ¡Ingrese un entero!
Mecanismo de funcionamiento
- En el bloque
try:
, se recibe la entrada coninput()
y se convierte conint()
. - Si se ingresa un número, se continúa el procesamiento normalmente.
- Si se ingresa un valor no convertible como una cadena, ocurre
ValueError
y se ejecuta el procesamiento deexcept ValueError:
.
De esta manera, incluso si ocurre un error, el programa no se bloquea y se puede mostrar un mensaje adecuado.
4.2 Usar un bucle while
para seguir solicitando una entrada correcta
En el método anterior, al ocurrir un error solo se muestra un mensaje de error, pero también se usa comúnmente el método de repetir la solicitud hasta que se ingrese un valor correcto.
Ejemplo: Repetir hasta que el usuario ingrese un entero
while True:
try:
num = int(input("Ingrese un entero: "))
break # Salir del bucle si se ingresa correctamente
except ValueError:
print("Error: ¡Ingrese un entero!")
print(f"Entero ingresado: {num}")
Ejemplo de ejecución
Ingrese un entero: abc
Error: ¡Ingrese un entero!
Ingrese un entero: 12
Entero ingresado: 12
Puntos clave
- Usar
while True:
para crear un bucle infinito. - Usar
try-except
para solicitar nuevamente la entrada si ocurre un error. - Si se ingresa correctamente, salir del bucle con
break
.
Con este método, el programa sigue funcionando hasta que el usuario ingrese en el formato correcto.
4.3 Procesamiento de múltiples entradas usando try-except
También al recibir múltiples valores, se puede procesar de manera segura usando try-except
.
Ejemplo: Ingresar múltiples enteros separados por espacios
while True:
try:
numbers = list(map(int, input("Ingrese enteros separados por espacios: ").split()))
break # Salir del bucle si se ingresa correctamente
except ValueError:
print("Error: ¡Ingrese solo enteros!")
print(f"Lista de enteros ingresados: {numbers}")
Ejemplo de ejecución
Ingrese enteros separados por espacios: 10 20 30
Lista de enteros ingresados: [10, 20, 30]
Ingrese enteros separados por espacios: 10 abc 30
Error: ¡Ingrese solo enteros!
Explicación
- Usar
map(int, input().split())
para obtener múltiples enteros. - Usar
try-except
para solicitar nuevamente la entrada si no son números.
4.4 Usar finally
para realizar procesamiento posterior
En try-except
, hay un bloque finally
que se ejecuta al final independientemente de si hubo un error o no.
Ejemplo: Procesamiento de liberación de recursos
try:
num = int(input("Ingrese un entero: "))
print(f"Entero ingresado: {num}")
except ValueError:
print("Error: ¡Ingrese un entero!")
finally:
print("Finalizando el procesamiento.")
Resultado de ejecución
Ingrese un entero: abc
Error: ¡Ingrese un entero!
Finalizando el procesamiento.
Usar el bloque finally:
permite ejecutar procesamiento al final independientemente de la excepción, por lo que se utiliza para el procesamiento posterior de recursos.
4.5 Resumen
Método | Explicación | Casos de uso |
---|---|---|
try-except | Capturar excepciones y realizar procesamiento de errores | Verificación simple de entrada |
while + try-except | Repetir la solicitud de entrada hasta obtener una correcta | Procesamiento que continúa hasta que el usuario ingrese correctamente |
try-except-finally | Ejecutar procesamiento de errores + procesamiento posterior | Gestión de recursos de archivos o bases de datos |
5. Edición avanzada: Procesamiento de entrada avanzado
En Python, además de la función estándar input()
, es posible recibir entrada del usuario de diversas maneras. En particular, la entrada desde un archivo, la obtención de argumentos de línea de comandos y la ocultación de entrada de contraseña son útiles al crear programas prácticos.
En esta sección, se explica el procesamiento de entrada avanzado utilizando sys.stdin.read()
, argparse
y getpass
.
5.1 Entrada desde un archivo【sys.stdin.read()
】
En Python, en lugar de input()
, es posible leer el contenido de un archivo como entrada estándar (stdin). De esta manera, se puede pasar el contenido del archivo al programa para procesarlo.
Método para obtener entrada desde un archivo
import sys
data = sys.stdin.read() # Leer toda la entrada estándar
print("Datos ingresados:")
print(data)
Método de ejecución (terminal de Linux/macOS)
$ python script.py < sample.txt
De esta manera, al especificar < nombre_del_archivo
, el contenido de sample.txt
se lee con sys.stdin.read()
.
Usos
- Programas para procesar grandes cantidades de datos (análisis de logs, conversión de datos)
- Scripts que reciben archivos a través de tuberías
5.2 Recibir argumentos de línea de comandos【argparse
】
Al usar argumentos de línea de comandos, es posible pasar valores desde el exterior al ejecutar el script. Esto es conveniente cuando se desea cambiar flexiblemente el comportamiento del script.
Ejemplo básico usando argparse
import argparse
parser = argparse.ArgumentParser(description="Script para obtener el nombre del usuario")
parser.add_argument("name", help="Ingrese su nombre")
args = parser.parse_args()
print(f"¡Hola, {args.name}!")
Método de ejecución
$ python script.py Taro
¡Hola, Taro!
Recibir múltiples argumentos
parser.add_argument("age", type=int, help="Ingrese la edad")
args = parser.parse_args()
print(f"{args.name} tiene {args.age} años.")
Método de ejecución
$ python script.py Taro 25
Taro tiene 25 años.
Usos
- Creación de herramientas de línea de comandos
- Especificación de valores de configuración del script desde el exterior
5.3 Ocultar entrada de contraseña【getpass
】
Normalmente, al ingresar una contraseña con input()
, se muestra directamente en la terminal. Para evitar esto, se utiliza el módulo getpass
.
Entrada segura de contraseña usando getpass
import getpass
password = getpass.getpass("Ingrese la contraseña: ")
print("Se ingresó la contraseña")
Resultado de ejecución (la contraseña no se ve al ingresar)
Ingrese la contraseña:
Se ingresó la contraseña
Usos
- Scripts que priorizan la seguridad
- Programas que requieren autenticación
5.4 Resumen
Método | Descripción | Usos principales |
---|---|---|
sys.stdin.read() | Leer el contenido del archivo como entrada estándar | Procesamiento de datos, análisis de logs |
argparse | Recibir argumentos de línea de comandos | Herramientas de línea de comandos |
getpass | Ocultar entrada de contraseña | Entrada que prioriza la seguridad |
6. Compatibilidad con Python 2 (Información complementaria)
En Python 3 se utiliza la función input()
para obtener la entrada del usuario, pero en Python 2 existían dos funciones: input()
y raw_input()
. En entornos que utilizan Python 2, el método de procesamiento de entrada es diferente, por lo que es necesario tener precaución al manejar código antiguo.
En esta sección se explica la diferencia entre input()
en Python 2 y Python 3.
6.1 input()
y raw_input()
en Python 2
En Python 2 había dos funciones de entrada diferentes: input()
y raw_input()
.
Función | Comportamiento en Python 2 | Equivalente en Python 3 |
---|---|---|
raw_input() | Recibe la entrada como cadena | Integrado en input() |
input() | Evalúa el contenido ingresado como expresión | Equivale a eval(input()) |
En Python 2, raw_input()
equivale a input()
, y en Python 3, el comportamiento de input()
se integró en raw_input()
.
6.2 El peligro de input()
en Python 2
La función input()
en Python 2 tiene una especificación peligrosa que evalúa la entrada del usuario como código de Python.
Por ejemplo, consideremos el siguiente código.
# En el caso de Python 2
value = input("Ingrese algo: ")
print(value)
Si se ejecuta este código y el usuario ingresa 5 + 5
, se calculará automáticamente y se mostrará 10
.
Ingrese algo: 5 + 5
10
Esto implica un riesgo de seguridad porque permite ejecutar código arbitrario.
Por ejemplo, si el usuario ingresa algo como __import__('os').system('rm -rf /')
, podría causar daños al sistema.
Alternativa segura
Al utilizar Python 2, se puede tratar la entrada del usuario como una cadena utilizando raw_input()
.
# Método seguro en Python 2
value = raw_input("Ingrese algo: ")
print(value)
En Python 3, input()
tiene una especificación segura, por lo que este problema no ocurre.
6.3 Cómo ejecutar código de Python 2 en Python 3
Para hacer que un código escrito en Python 2 funcione en Python 3, es necesario cambiar raw_input()
por input()
.
Sin embargo, si es difícil corregirlo manualmente, se puede usar la herramienta 2to3
para una conversión automática.
Conversión de código utilizando 2to3
Python 3 incluye una herramienta llamada 2to3
que puede convertir código de Python 2 a Python 3.
$ 2to3 old_script.py -w
De esta manera, raw_input()
se reemplazará automáticamente por input()
.
6.4 Resumen
Versión | Método de entrada seguro |
---|---|
Python 2 | Utilizar raw_input() (input() es peligroso) |
Python 3 | Utilizar input() (comportamiento seguro) |
- La función
input()
de Python 2 es peligrosa, por lo que no se debe usar. raw_input()
se integró eninput()
en Python 3.- Para convertir código antiguo de Python 2, utilizar la herramienta
2to3
.
7. Resumen
En este artículo, hemos explicado en detalle los métodos para recibir entrada del usuario en Python, desde lo básico hasta lo avanzado. Cubrimos una amplia gama de temas, desde el uso de la función input()
para principiantes hasta el manejo de errores y el procesamiento de entrada avanzado.
7.1 Resumen de los puntos del artículo
Sección | Contenido |
---|---|
1. Introducción | Explicar la importancia de usar input() para recibir la entrada del usuario |
2. Lo básico de input() | Métodos para entrada de cadenas, entrada numérica (int() / float() ) |
3. Recibir múltiples entradas | Métodos para recibir datos en formato de lista usando split() y entrada de varias líneas con un bucle while |
4. Manejo de errores | Cómo usar try-except para manejar los errores de forma adecuada |
5. Procesamiento de entrada avanzado | Entrada desde archivo con sys.stdin.read() , argumentos de línea de comandos con argparse y entrada de contraseña con getpass |
6. Diferencias con Python 2 | Diferencias entre raw_input() y input() , y métodos seguros de entrada en Python 2 |
7.2 Mejores prácticas para el procesamiento de entrada de usuario en Python
- Usar la básica
input()
- Si usas
input()
, puedes ingresar cadenas fácilmente. - Cuando recibas números, realiza la conversión de tipo con
int()
ofloat()
.
- Aplicar manejo de errores
- Usa
try-except
para evitar que los errores de entrada del usuario provoquen la terminación inesperada del programa. - En la entrada numérica, maneja adecuadamente
int()
yfloat()
.
- Procesar múltiples entradas
- Usa
split()
para obtener varios valores a la vez como una lista. - Usa un bucle
while
para recibir una cantidad arbitraria de líneas de entrada.
- Aprovechar métodos de entrada avanzados
- Entrada de archivo:
sys.stdin.read()
para leer un archivo. - Argumentos de línea de comandos:
argparse
para pasar variables desde el exterior. - Entrada de contraseña:
getpass
para garantizar la seguridad.
- Considerar la compatibilidad con Python 2
- En Python 2, usa
raw_input()
y evita usarinput()
. - Al migrar a Python 3, usa
2to3
para convertir el código.
7.3 Pasos siguientes
Al aprovechar input()
de Python, puedes crear programas más interactivos. Usa el contenido introducido en este artículo e incorpóralo a tus propios programas.
Si quieres aprender procesamiento de entrada más avanzado, se recomienda estudiar los siguientes temas.
- Procesamiento de entrada con GUI (
tkinter
yPyQt
, etc.) - Procesamiento de entrada de base de datos (
sqlite3
yMySQL
, integración) - Entrada de datos desde formularios web (formularios de Flask y Django)
Si puedes manejar libremente la entrada de usuario en Python, podrás aplicarlo al desarrollo de programas más avanzados como aplicaciones web o herramientas de procesamiento de datos.
¡Usa este artículo como referencia para dominar el procesamiento de entrada en Python de manera fluida! 🚀