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

    números inteiros sendo mostrados
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Enteros en Python: guía completa para principiantes

    Aprende enteros en Python con operaciones, división, conversiones, bases numéricas, valores grandes, range, bits y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Definição e uso de funções com def em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Funciones en Python: guía completa para principiantes

    Aprende funciones en Python con def, parámetros, return, valores predeterminados, *args, **kwargs, scope, type hints, docstrings y pruebas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Logo do Python com emoji pensativo e a palavra PRINT sobre fundo azul
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

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

    Aprende print() en Python: texto, variables, sep, end, f-strings, alineación, archivos, depuración, logging y errores comunes.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Ilustração que representa um algoritmo
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Qué es un algoritmo en programación: guía práctica

    Aprende qué es un algoritmo en programación con ejemplos cotidianos, pseudocódigo, diagramas, Python, complejidad, pruebas y buenas prácticas.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Logo do Python com expressão pensativa e o texto range(), representando a função range no Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    range() en Python: guía completa con ejemplos

    Aprende range() en Python con start, stop, step, conteos regresivos, índices, rendimiento, errores frecuentes y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    texto 'operadores em Python' com os simbolos de operadores e o logo do Python à direita
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Operadores en Python: tipos y ejemplos prácticos

    Aprende los operadores en Python: aritméticos, comparación, asignación, lógicos, pertenencia, identidad, bits, sets y precedencia.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026