Dominando input() en Python
La función que convierte un programa en algo interactivo: le permite conversar con el usuario y recibir datos desde el teclado. Aprende a leerlos, convertirlos y validarlos con ejemplos prácticos que puedes editar y ejecutar en vivo.
Bienvenido
input() es la función que utilizarás cada vez que un programa necesite recibir información directamente del usuario: un nombre, una edad, un precio o cualquier dato que no esté escrito de antemano en el código.
Al finalizar esta guía sabrás leer datos del usuario, convertirlos al tipo correcto, combinarlos con f-Strings, leer varios valores a la vez y validarlos antes de usarlos.
Todos los bloques con el encabezado Python son editables: presiona ✏️ Editar para modificar el código y ▶ Ejecutar para correrlo de verdad en tu navegador (usa Pyodide, un Python real compilado a WebAssembly). Cuando el código llegue a un input(), aparecerá un cuadro de diálogo pidiéndote el valor: escríbelo y presiona Aceptar para continuar la ejecución.
📖 Aprende
Conceptos explicados paso a paso.
💻 Practica
Ejemplos editables y ejecutables con entrada real.
🎯 Domina
Ejercicios de dificultad creciente.
¿Qué es input()?
input() es una función incorporada de Python: siempre está disponible, sin necesidad de importar nada. Cuando el programa la ejecuta, se detiene y espera a que el usuario escriba algo y presione Enter.
nombre = input("¿Cómo te llamas? ")
print("Hola,", nombre)
Al ejecutar este bloque aparecerá un cuadro pidiendo el nombre. Lo que escribas se guarda en la variable nombre y luego se muestra con print().
Sintaxis básica
La forma más simple es variable = input(). También puedes pasar un mensaje entre paréntesis para indicarle al usuario qué debe escribir.
dato = input()
print("Escribiste:", dato)
El programa se detiene por completo en la línea de input() hasta que el usuario responde. No se ejecuta nada más hasta ese momento.
El mensaje de solicitud
El texto que colocas entre los paréntesis de input() se llama prompt y se muestra justo antes de esperar la respuesta del usuario. Es totalmente opcional, pero mejora mucho la experiencia del programa.
edad = input("Ingresa tu edad: ")
print("Tu edad es", edad)
Termina el mensaje con dos puntos y un espacio, por ejemplo "Nombre: ", para que la respuesta del usuario no quede pegada al texto.
input() siempre devuelve texto
Sin importar lo que el usuario escriba, input() siempre devuelve un string. Incluso si tecleas números, Python los recibe como texto.
edad = input("Edad: ")
print(type(edad))
Salida (si escribes 20):
Edad: 20 <class 'str'>
Si intentas sumar el resultado de input() directamente con un número, Python producirá un error. Prueba ejecutar este bloque para verlo.
edad = input("Edad: ")
print(edad + 1)
Obtendrás TypeError: can only concatenate str (not "int") to str, porque edad es texto, no un número.
Conversión de tipos
Para trabajar con números, debes convertir el resultado de input() usando int() o float().
edad = int(input("Edad: "))
print(edad + 1)
altura = float(input("Altura en metros: "))
print(altura * 100)
| Función | Convierte a | Ejemplo |
|---|---|---|
int() | Número entero | int(input("Edad: ")) |
float() | Número decimal | float(input("Precio: ")) |
str() | Texto (ya lo es por defecto) | str(input("Nombre: ")) |
Convierte el dato apenas lo recibes, en la misma línea de input(). Así evitas arrastrar un string por el resto del programa cuando en realidad necesitas un número.
Ejemplo práctico
base = float(input("Base del rectángulo: "))
altura = float(input("Altura del rectángulo: "))
area = base * altura
print("El área es:", area)
input() combinado con f-Strings
Una vez leídos y convertidos los datos, los f-Strings son la forma más clara de mostrarlos dentro de un mensaje.
nombre = input("Nombre: ")
edad = int(input("Edad: "))
print(f"Hola {nombre}, el próximo año tendrás {edad + 1} años")
Dentro de las llaves de un f-String puedes usar directamente el resultado convertido, incluso con operaciones como edad + 1.
Mini reto
Sin ejecutar el programa, intenta predecir qué pasaría si escribes tu nombre y luego tu edad. Luego verifica editando y ejecutando el bloque de código.
- ¿Qué tipo de dato devuelve
input()siempre? - ¿Qué error ocurre si sumas
input()directamente con un número? - ¿Qué función usarías para leer un precio con decimales?
nombre = input("Nombre: ")
edad = int(input("Edad: "))
print(f"{nombre} tiene {edad} años")
Antes de ejecutar un programa, intenta predecir el resultado. Ese hábito acelera muchísimo el aprendizaje de programación.
Leer varios valores en una sola línea
Puedes pedirle al usuario varios datos separados por un mismo input() y luego dividirlos con split().
datos = input("Escribe tu nombre y tu edad separados por coma: ")
nombre, edad = datos.split(",")
print("Nombre:", nombre.strip())
print("Edad:", edad.strip())
También puedes convertir varios números a la vez combinando split() con map().
a, b = map(int, input("Escribe dos números separados por espacio: ").split())
print("Suma:", a + b)
split() divide el texto ingresado en una lista de partes, y map(int, ...) convierte cada una de esas partes a número entero.
Validar los datos ingresados
No siempre el usuario escribe lo que el programa espera. Antes de convertir un dato, conviene comprobar que realmente sea válido.
edad = input("Edad: ")
if edad.isdigit():
edad = int(edad)
print("Edad registrada:", edad)
else:
print("Debes ingresar solo números")
Otra forma habitual es usar try y except para capturar el error de conversión directamente.
try:
edad = int(input("Edad: "))
print("Correcto:", edad)
except ValueError:
print("Debes ingresar un número válido")
Valida siempre los datos que provienen de input() antes de usarlos en cálculos. Un usuario puede escribir letras donde se esperaba un número.
Errores comunes
❌ Olvidar convertir el tipo
input() siempre devuelve texto. Sumar directamente el resultado con un número produce un TypeError.
❌ Convertir texto no numérico
int("veinte") falla con ValueError. Valida antes de convertir, con isdigit() o try/except.
❌ Olvidar el mensaje
Un input() sin mensaje deja al usuario sin saber qué debe escribir. Siempre incluye un prompt claro.
Prueba el error
Ejecuta este bloque y escribe algo que no sea un número (por ejemplo "veinte") para observar en vivo el ValueError.
edad = int(input("Edad: "))
print("Tu edad es", edad)
Edita el bloque anterior y envuélvelo en try/except ValueError para mostrar un mensaje amigable en lugar del error.
Resumen
| Elemento | Descripción |
|---|---|
input() | Espera y devuelve lo que escribe el usuario, siempre como texto. |
input("mensaje") | Muestra un mensaje antes de esperar la respuesta. |
int(input()) | Lee y convierte a número entero. |
float(input()) | Lee y convierte a número decimal. |
input().split() | Divide una entrada en varias partes. |
try/except ValueError | Evita que el programa se detenga por datos inválidos. |
Ejercicios Propuestos
Pon en práctica lo aprendido resolviendo los siguientes ejercicios directamente en el bloque editable.
- Pide tu nombre con
input()y muéstralo con un f-String. - Pide dos números, conviértelos con
int()y muestra su suma. - Pide un precio con decimales y muéstralo multiplicado por 1.16 (impuesto).
- Pide nombre y edad separados por coma en un solo
input()y sepáralos consplit(). - Valida con
isdigit()que una edad ingresada sea numérica antes de convertirla. - Usa
try/except ValueErrorpara evitar que el programa se detenga si el usuario escribe texto en lugar de un número.
Reto Final
Desarrolla un programa que pida al usuario, mediante input():
- Nombre completo
- Carrera
- Semestre
- Promedio
El programa deberá:
- Convertir cada dato al tipo correcto (
intofloatsegún corresponda). - Mostrar una tarjeta usando un único f-String multilínea.
- Mostrar el promedio con dos decimales.
- Validar con
try/exceptque el semestre y el promedio sean numéricos.
================================= DATOS DEL ESTUDIANTE Nombre : Ana López Carrera : Ingeniería Semestre : 4 Promedio : 91.40 =================================
Cheat Sheet
| Uso | Ejemplo |
|---|---|
| Lectura simple | dato = input() |
| Con mensaje | input("Nombre: ") |
| Leer entero | int(input("Edad: ")) |
| Leer decimal | float(input("Precio: ")) |
| Varios valores | input().split(",") |
| Varios números | map(int, input().split()) |
| Validar dígitos | input().isdigit() |
| Validar con excepción | try/except ValueError |
¿Sabías que...?
🐍 En Python 2 era distinto
Existían raw_input() (devolvía texto) e input() (evaluaba código). Desde Python 3, solo existe input() y siempre devuelve texto.
🚀 input() detiene el programa
Mientras espera una respuesta, ninguna otra línea del programa se ejecuta.
📖 Todo pasa por sys.stdin
Internamente, input() lee desde la entrada estándar del programa.