JPablos

Tabla Dinámica. Simple Python

Mar 3rd, 2025
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.14 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Creado el Lun 03 Mar 2025 07:54:52
  4.  
  5. Autor: JP
  6.  
  7. Crear una Tabla Dinámica que se ajusta al "len" de los datos, presentandolos
  8. centrados tanto horizontamente (filas) como verticalmente (columnas).
  9.  
  10. Utilza como separadores verticales (|) y como horizontales (-----).
  11. Python: pura magia.
  12. Utiliza conceptos básicos como "len", funciones sencillas ...
  13. """
  14.  
  15.  
  16. def calcular_anchos(rango):
  17.     """Calcula el ancho necesario para cada columna."""
  18.     max_decimal = len(str(rango[-1]))  # Ancho máximo en decimal
  19.     max_hex = len(hex(rango[-1])[2:])  # Ancho máximo en hexadecimal
  20.     max_octal = len(oct(rango[-1])[2:])  # Ancho máximo en octal
  21.     max_binario = len(bin(rango[-1])[2:])  # Ancho máximo en binario
  22.  
  23.     # Añadir 4 espacios adicionales para cada columna (2 a cada lado)
  24.     width_c1 = max_decimal + 4  # Ancho columna decimal
  25.     width_c2 = max_hex + 4  # Ancho columna hexadecimal
  26.     width_c3 = max_octal + 4  # Ancho columna octal
  27.     width_c4 = max_binario + 4  # Ancho columna binario
  28.  
  29.     return width_c1, width_c2, width_c3, width_c4
  30.  
  31.  
  32. def imprimir_tabla(rango):
  33.     """Imprime la tabla con el formato adecuado."""
  34.     # Calcular los anchos necesarios para cada columna
  35.     width_c1, width_c2, width_c3, width_c4 = calcular_anchos(rango)
  36.  
  37.     # Calcular el ancho total de la tabla
  38.     ancho_total = (
  39.         width_c1 + width_c2 + width_c3 + width_c4 + 9
  40.     )  # 9 por los separadores " | "
  41.  
  42.     # Encabezado de la tabla
  43.     separador = "-" * ancho_total  # Separador dinámico
  44.     print(separador)
  45.     # Encabezado con anchos individuales
  46.     print(
  47.         f"{'d':^{width_c1}} | {'x':^{width_c2}} | {'o':^{width_c3}} | {'b':^{width_c4}}"
  48.     )
  49.     print(separador)
  50.  
  51.     # Cuerpo de la tabla
  52.     for num in rango:
  53.         decimal = f"{num:^{width_c1}d}"
  54.         hexadecimal = f"{num:^{width_c2}X}"
  55.         octal = f"{num:^{width_c3}o}"
  56.         binario = f"{num:^{width_c4}b}"
  57.         print(f"{decimal} | {hexadecimal} | {octal} | {binario}")
  58.  
  59.  
  60. # Definir el rango
  61. rango = range(5012, 5022)  # Ejemplo con un rango pequeño para prueba
  62.  
  63. # Imprimir la tabla
  64. imprimir_tabla(rango)
Advertisement
Add Comment
Please, Sign In to add comment