Entrada y Salida de Datos en Python

Python utiliza la función input() para recibir datos del usuario. Por defecto, input() siempre devuelve una cadena de texto. Si necesitas interpretar estos datos como números u otros tipos, deberás realizar una conversión explícita.

Lectura de datos en una sola línea

  • Lectura de cadenas de texto:

    Para leer una cadena de texto y mostrar un mensaje al usuario:

    
    # Solicita al usuario que ingrese un valor y lo almacena en la variable 'entrada_usuario'
    entrada_usuario = input("Por favor, introduce un valor: ")
    
    

    Para leer una línea y dividirla en múltiples variables basándose en un delimitador (como un espacio):

    
    # Lee una línea y la divide por espacios, asignando las partes a 'var1' y 'var2'
    var1, var2 = input().split()
    
    # Lee una línea y la divide por comas, asignando las partes a 'var1' y 'var2'
    var1, var2 = input().split(',')
    
    
  • Lectura de números:

    Para leer un número entero:

    
    # Lee una línea y la convierte a entero, almacenándola en 'num_entero'
    num_entero = int(input())
    
    

    Para leer un número de punto flotante:

    
    # Lee una línea y la convierte a flotante, almacenándola en 'num_flotante'
    num_flotante = float(input())
    
    

    Para leer varios números enteros separados por espacios en una sola línea:

    
    # Lee una línea, la divide por espacios y convierte cada parte a entero
    # Asigna los enteros resultantes a 'num_a' y 'num_b'
    num_a, num_b = map(int, input().split())
    
    

Lectura de un número indeterminado de enteros en una línea

Si no sabes cuántos números ingresará el usuario en una línea, puedes leerlos y almacenarlos en una lista:


# Lee una línea con números separados por espacios, los convierte a enteros
# y los almacena en una lista llamada 'lista_numeros'
lista_numeros = list(map(int, input().split()))
 

Lectura de múltiples líneas

Primero se lee la cantidad de líneas, y luego se leen las líneas subsiguientes:

  • Leer un número por línea:

    
    # Lee la cantidad de números a ingresar
    cantidad = int(input())
    # Crea una lista para almacenar los números
    numeros_ingresados = []
    # Itera 'cantidad' veces para leer cada número
    for _ in range(cantidad):
       valor = int(input())
       numeros_ingresados.append(valor)
    
    

    Una forma más concisa usando comprensión de listas:

    
    # Lee la cantidad de números a ingresar
    cantidad = int(input())
    # Lee 'cantidad' números y los almacena en la lista 'numeros_ingresados'
    numeros_ingresados = [int(input()) for _ in range(cantidad)]
    
    
  • Leer tres números por línea, almacenados en listas separadas:

    
    # Lee la cantidad de conjuntos de tres números
    num_filas = int(input())
    
    # Inicializa listas vacías para cada componente
    componente_x = []
    componente_y = []
    componente_z = []
    
    # Lee cada fila de tres números
    for _ in range(num_filas):
       x, y, z = map(int, input().split())
       componente_x.append(x)
       componente_y.append(y)
       componente_z.append(z)
    
    

Salida de Datos con print()

La función print() se utiliza para mostrar información en la consola. Puede mostrar múltiples elementos separados por comas, los cuales se imprimirán con un espacio entre ellos por defecto.

Salida simple de elementos


var_num1 = 10
var_num2 = 25
print(var_num1, var_num2) # Salida: 10 25

var_texto = "Hola Mundo"
print(var_num1, var_num2, var_texto) # Salida: 10 25 Hola Mundo
 

Salida formateada

Python ofrece varias maneras de formatear la salida, siendo las más comunes las f-strings y el método format() de las cadenas.

Usando f-strings (formato literal de cadenas)

Las f-strings son una forma moderna y legible de incrustar expresiones dentro de cadenas de texto.


valor_a = 15
valor_b = 3.14159
print(f'El valor de a es {valor_a} y el valor de b es {valor_b}')
# Salida: El valor de a es 15 y el valor de b es 3.14159
 

Usando el método format()

Este método permite crear cadenas con marcadores de posición (llaves {}) que luego son reemplazados por los argumentos proporcionados.

  • Formateo básico por orden:

    
    libro = "Ficciones"
    precio = 75.50
    cadena_formateada = 'Compré el libro "{}" por {:.2f}'.format(libro, precio)
    print(cadena_formateada)
    # Salida: Compré el libro "Ficciones" por 75.50
    
    

    Si no se especifican índices, los argumentos se asignan en orden a los marcadores de posición.

  • Formtaeo con índices de posición:

    Puedes especificar qué argumento usar en cada marcador de posición usando su índice numérico.

    
    precio_total = 75.50
    nombre_articulo = "Ficciones"
    # El {0} se reemplaza por el primer argumento (precio_total), y {1} por el segundo (nombre_articulo)
    cadena_formateada = 'Gasté {0:.2f} en el libro: "{1}". ¡Solo {0:.2f}!'.format(precio_total, nombre_articulo)
    print(cadena_formateada)
    # Salida: Gasté 75.50 en el libro: "Ficciones". ¡Solo 75.50!
    
    
  • Formateo con argumentos de palabra clave:

    También puedes usar nombres de variables como argumentos de palabra clave.

    
    precio_item = 75.50
    titulo_libro = "Ficciones"
    cadena_formateada = 'El costo fue {p}, y el título es "{t}". ¡Un gran precio: {p}!'.format(p=precio_item, t=titulo_libro)
    print(cadena_formateada)
    # Salida: El costo fue 75.50, y el título es "Ficciones". ¡Un gran precio: 75.50!
    
    

Formateo de números

  • Conversión a diferentes bases numéricas:
    
    numero = 58
    # Decimal (predeterminado si no se especifica)
    print('{:d}'.format(numero))  # Salida: 58
    
    # Binario
    print('{:b}'.format(numero))  # Salida: 111010
    
    # Hexadecimal (minúsculas)
    print('{:x}'.format(numero))  # Salida: 3a
    
    # Hexadecimal (mayúsculas)
    print('{:X}'.format(numero))  # Salida: 3A
    
    
  • Control de precisión y ancho:

    Para mostrar un entero como flotante:

    
    print('{:f}'.format(58))  # Salida: 58.000000
    
    

    Especificar un ancho mínimo para la salida. Si el número tiene menos dígitos, se rellenará con espacios a la izquierda (para números) o derecha (para cadenas).

    
    # Ancho mínimo de 10 caracteres, rellenado con espacios a la izquierda
    print('{:10}'.format(58))
    # Ancho mínimo de 10 caracteres, rellenado con espacios a la derecha
    print('{:10}'.format('58'))
    
    

    Controlar el número de dígitos después del punto decimal (precisión):

    
    valor_pi = 3.1415926
    # Mostrar 3 dígitos significativos en total
    print('{:.3}'.format(valor_pi))  # Salida: 3.14
    
    # Mostrar 3 dígitos después del punto decimal
    print('{:.3f}'.format(valor_pi)) # Salida: 3.142 (redondeado)
    
    

    Combinar ancho y precisión:

    
    # Ancho total de 7 caracteres, con 3 dígitos decimales
    print('{:7.3f}'.format(valor_pi)) # Salida:    3.142 (espacios a la izquierda)
    
    

    Extraer los primeros N caracteres de una cadena y/o formatearlos con un ancho:

    
    texto_largo = 'HelloWorld'
    # Extraer los primeros 5 caracteres
    print('{:.5}'.format(texto_largo)) # Salida: Hello
    
    # Extraer los primeros 5 caracteres y formatear en un ancho de 10
    print('{:10.5}'.format(texto_largo)) # Salida:      Hello
    
    
  • Separador de miles y formato de fecha:

    Usar coma como separador de miles:

    
    numero_grande = 12345678
    print('{:,}'.format(numero_grande)) # Salida: 12,345,678
    
    

    Formatear objetos de fecha y hora:

    
    from datetime import datetime
    fecha_hora = datetime(2018, 8, 18, 18, 18, 18)
    print('{:%Y-%m-%d %H:%M:%S}'.format(fecha_hora)) # Salida: 2018-08-18 18:18:18
    
    

Al igual que con las f-strings, puedes especificar qué argumento usar en el formato, ya sea por índice o por nombre de varible:


# Usando índice
print('{0:b}'.format(58)) # Salida: 111010

# Usando nombre de variable
print('{valor_hex:x}'.format(valor_hex=58)) # Salida: 3a
 

Etiquetas: Python entrada de datos Salida de Datos Input print

Publicado el 7-20 06:18