🐍 Guía de Aula Invertida
vistas

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.

RC
Ing. Roy Carrasco
Facultad de Ingeniería de Sistemas · UAB

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.

Objetivo del módulo

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.

💻 Código en vivo

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.

Python
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.

Python
dato = input()
print("Escribiste:", dato)
Importante

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.

Python
edad = input("Ingresa tu edad: ")
print("Tu edad es", edad)
Buena práctica

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.

Python
edad = input("Edad: ")
print(type(edad))

Salida (si escribes 20):

Consola
Edad: 20
<class 'str'>
Error frecuente

Si intentas sumar el resultado de input() directamente con un número, Python producirá un error. Prueba ejecutar este bloque para verlo.

Python
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().

Python
edad = int(input("Edad: "))
print(edad + 1)
Python
altura = float(input("Altura en metros: "))
print(altura * 100)
FunciónConvierte aEjemplo
int()Número enteroint(input("Edad: "))
float()Número decimalfloat(input("Precio: "))
str()Texto (ya lo es por defecto)str(input("Nombre: "))
Uso recomendado

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

Python
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.

Python
nombre = input("Nombre: ")
edad = int(input("Edad: "))
print(f"Hola {nombre}, el próximo año tendrás {edad + 1} años")
Muy útil

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.

  1. ¿Qué tipo de dato devuelve input() siempre?
  2. ¿Qué error ocurre si sumas input() directamente con un número?
  3. ¿Qué función usarías para leer un precio con decimales?
Python
nombre = input("Nombre: ")
edad = int(input("Edad: "))
print(f"{nombre} tiene {edad} años")
Consejo del docente

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().

Python
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().

Python
a, b = map(int, input("Escribe dos números separados por espacio: ").split())
print("Suma:", a + b)
¿Cómo funciona?

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.

Python
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.

Python
try:
    edad = int(input("Edad: "))
    print("Correcto:", edad)
except ValueError:
    print("Debes ingresar un número válido")
Uso recomendado

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.

Python
edad = int(input("Edad: "))
print("Tu edad es", edad)
Corrígelo

Edita el bloque anterior y envuélvelo en try/except ValueError para mostrar un mensaje amigable en lugar del error.

Resumen

ElementoDescripció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 ValueErrorEvita 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.

  1. Pide tu nombre con input() y muéstralo con un f-String.
  2. Pide dos números, conviértelos con int() y muestra su suma.
  3. Pide un precio con decimales y muéstralo multiplicado por 1.16 (impuesto).
  4. Pide nombre y edad separados por coma en un solo input() y sepáralos con split().
  5. Valida con isdigit() que una edad ingresada sea numérica antes de convertirla.
  6. Usa try/except ValueError para evitar que el programa se detenga si el usuario escribe texto en lugar de un número.
✍️ Resuelve aquí los ejercicios

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 (int o float según corresponda).
  • Mostrar una tarjeta usando un único f-String multilínea.
  • Mostrar el promedio con dos decimales.
  • Validar con try/except que el semestre y el promedio sean numéricos.
Salida esperada
=================================
DATOS DEL ESTUDIANTE
Nombre    : Ana López
Carrera   : Ingeniería
Semestre  : 4
Promedio  : 91.40
=================================

Cheat Sheet

UsoEjemplo
Lectura simpledato = input()
Con mensajeinput("Nombre: ")
Leer enteroint(input("Edad: "))
Leer decimalfloat(input("Precio: "))
Varios valoresinput().split(",")
Varios númerosmap(int, input().split())
Validar dígitosinput().isdigit()
Validar con excepcióntry/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.