input() en Python: guía completa para principiantes

Publicado el: 11/07/2026
Tempo de leitura: 3 minutos
logo do Python com o texto input() no meio

La función input() permite que un programa de Python muestre una pregunta, espere una respuesta y guarde el texto escrito por el usuario. Es la base de formularios en terminal, calculadoras, menús, cuestionarios y muchos proyectos para principiantes.

La regla más importante es que input() en Python siempre devuelve una cadena. Aunque el usuario escriba 25, el programa recibe "25" hasta que realices una conversión.

Primer ejemplo con input()

name = input("¿Cómo te llamas? ")
print(f"Hola, {name}")

El texto dentro de los paréntesis es el mensaje mostrado al usuario. El comportamiento completo aparece en la documentación oficial de input().

input() siempre devuelve texto

age = input("Edad: ")
print(type(age))

El tipo será str. Para hacer cálculos, convierte primero:

age = int(input("Edad: "))
print(f"El próximo año tendrás {age + 1} años.")

Cuando se permiten decimales, utiliza float():

height = float(input("Altura en metros: "))
print(f"Altura: {height:.2f} m")

La guía de enteros en Python explica conversión, operaciones y validación.

Eliminar espacios innecesarios

name = input("Nombre: ").strip()
email = input("Correo: ").strip().lower()

print(name)
print(email)

strip() elimina espacios al principio y al final. Normalizar el correo a minúsculas puede ser útil, pero no cambies automáticamente datos en los que las mayúsculas tengan significado.

Validar un entero con try y except

try:
    age = int(input("Edad: "))
    print(f"Edad registrada: {age}")
except ValueError:
    print("Introduce un número entero.")

Para repetir hasta recibir un valor válido:

while True:
    try:
        age = int(input("Edad: "))
    except ValueError:
        print("Introduce un número entero.")
        continue

    if age < 0 or age > 130:
        print("Introduce una edad realista.")
        continue

    break

print(f"Edad válida: {age}")

La guía de try y except en Python explica excepciones específicas. La guía de bucles en Python explica while, break y continue.

Crear una función reutilizable

def read_integer(prompt: str, minimum=None, maximum=None) -> int:
    while True:
        try:
            value = int(input(prompt))
        except ValueError:
            print("Introduce un entero válido.")
            continue

        if minimum is not None and value < minimum:
            print(f"El mínimo es {minimum}.")
            continue

        if maximum is not None and value > maximum:
            print(f"El máximo es {maximum}.")
            continue

        return value


quantity = read_integer("Cantidad: ", minimum=1, maximum=100)

Separar la validación evita repetir el mismo código. Consulta la guía de funciones en Python para diseñar funciones pequeñas y claras.

Leer números decimales

def read_float(prompt: str, minimum=None) -> float:
    while True:
        text = input(prompt).strip()

        try:
            value = float(text)
        except ValueError:
            print("Introduce un número válido, como 12.50.")
            continue

        if minimum is not None and value < minimum:
            print(f"El valor mínimo es {minimum}.")
            continue

        return value


price = read_float("Precio: ", minimum=0)

Las aplicaciones financieras pueden necesitar Decimal en lugar de float, según sus reglas de precisión.

Preguntas de sí o no

def ask_yes_no(prompt: str) -> bool:
    while True:
        answer = input(f"{prompt} [s/n]: ").strip().lower()

        if answer in {"s", "sí", "si"}:
            return True
        if answer in {"n", "no"}:
            return False

        print("Responde s o n.")

Un set expresa claramente los valores permitidos. La guía de sets en Python muestra operaciones de pertenencia y valores únicos.

Crear un menú en terminal

def show_menu():
    print("\n1. Añadir tarea")
    print("2. Listar tareas")
    print("3. Salir")


while True:
    show_menu()
    option = input("Elige una opción: ").strip()

    if option == "1":
        print("Añadir tarea")
    elif option == "2":
        print("Listar tareas")
    elif option == "3":
        print("Hasta luego")
        break
    else:
        print("Opción inválida")

Mantener la opción como texto evita una conversión innecesaria.

Leer varios valores en una línea

numbers = [
    int(value)
    for value in input("Escribe números: ").split()
]
print(sum(numbers))

Una versión más segura valida la lista completa:

def read_integer_list(prompt: str) -> list[int]:
    while True:
        parts = input(prompt).split()

        try:
            return [int(part) for part in parts]
        except ValueError:
            print("Utiliza enteros separados por espacios.")

Valores opcionales y predeterminados

city = input("Ciudad [Madrid]: ").strip() or "Madrid"
print(city)

Para un número opcional, comprueba si la cadena está vacía antes de convertir:

text = input("Descuento [0]: ").strip()
discount = 0.0 if text == "" else float(text)

Contraseñas con getpass

input() muestra los caracteres escritos. Para una contraseña en terminal, utiliza getpass:

from getpass import getpass

username = input("Usuario: ").strip()
password = getpass("Contraseña: ")

La documentación oficial de getpass explica su comportamiento. No imprimas ni guardes contraseñas en texto plano.

Cancelar la entrada correctamente

El usuario puede pulsar Ctrl+C o enviar una señal de fin de archivo:

def main():
    name = input("Nombre: ").strip()
    print(f"Hola, {name}")


try:
    main()
except (KeyboardInterrupt, EOFError):
    print("\nEntrada cancelada")

Este manejo suele colocarse en el punto de entrada del programa, no alrededor de cada línea.

input() bloquea la ejecución

Mientras espera una respuesta, el hilo actual no continúa. Esto es correcto para aplicaciones de terminal, pero puede congelar una interfaz gráfica o bloquear un servidor web. En una web, los datos llegan mediante formularios, JSON, parámetros y archivos.

Separar entrada y lógica

def calculate_total(price: float, quantity: int) -> float:
    if price < 0:
        raise ValueError("El precio no puede ser negativo")
    if quantity < 1:
        raise ValueError("La cantidad debe ser positiva")
    return price * quantity


price = read_float("Precio: ", minimum=0)
quantity = read_integer("Cantidad: ", minimum=1)
print(f"Total: {calculate_total(price, quantity):.2f}")

La función de cálculo puede probarse sin simular el teclado. El tutorial de Pytest muestra cómo comprobar resultados y excepciones.

Proyecto práctico: calculadora de notas

def read_grade(label: str) -> float:
    while True:
        try:
            grade = float(input(f"{label} (0-100): "))
        except ValueError:
            print("Introduce una nota numérica.")
            continue

        if 0 <= grade <= 100:
            return grade

        print("La nota debe estar entre 0 y 100.")


grades = [
    read_grade("Tarea"),
    read_grade("Proyecto"),
    read_grade("Examen"),
]

average = sum(grades) / len(grades)
status = "aprobado" if average >= 60 else "suspendido"

print(f"Promedio: {average:.1f}")
print(f"Resultado: {status}")

Errores frecuentes

  • Hacer cálculos directamente con cadenas.
  • Convertir una cadena vacía con int().
  • Utilizar eval() con texto del usuario.
  • Validar el tipo pero no las reglas del negocio.
  • Mostrar contraseñas con input().
  • Mezclar toda la lógica con preguntas y mensajes.

Conclusión

input() hace interactivas las aplicaciones de terminal, pero una entrada útil necesita normalización, conversión, validación y mensajes claros. Trata todo dato externo como no confiable, separa la interfaz de la lógica y utiliza funciones reutilizables para que el programa sea más fácil de probar y mantener.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Logo do Python com as palavras global e local
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Alcance de variables en Python: entiende la regla LEGB

    Entiende el alcance de variables en Python con la regla LEGB, global, nonlocal, closures, sombreado, mutabilidad y UnboundLocalError.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Operações matemáticas usando o módulo math em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Módulo math en Python: operaciones matemáticas esenciales

    Aprende el módulo math en Python: raíces, potencias, redondeos, trigonometría, logaritmos, constantes, isclose y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Geração de números aleatórios seguros usando secrets em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Módulo secrets en Python: números y tokens seguros

    Aprende secrets en Python para generar contraseñas, códigos y tokens seguros con randbelow, choice, token_hex, token_urlsafe y compare_digest.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Uso do operador walrus para atribuições inline em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Operador walrus en Python: guía con ejemplos

    Aprende el operador walrus := en Python: condiciones, while, comprensiones, lectura por bloques, regex, alcance y buenas prácticas.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Uso da função zip para combinar listas em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    zip() en Python: combina listas e iterables correctamente

    Aprende zip() en Python para combinar listas, crear diccionarios, usar strict, zip_longest, desempaquetar valores y evitar pérdidas silenciosas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Uso do módulo time para controlar tempo em scripts Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Módulo time en Python: pausas, timestamps y rendimiento

    Aprende el módulo time en Python: timestamps, sleep, monotonic, perf_counter, struct_time, strftime y buenas prácticas para medir tiempo.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026