Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Impresión de datos (formateado de cadenas)

Estas en el tema de Impresión de datos (formateado de cadenas) en el foro de Python en Foros del Web. Existe alguna otra alternativa a la línea 11 ? @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Python: Ver original import numpy as np   t = np. array ( ...
  #1 (permalink)  
Antiguo 16/06/2013, 10:15
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Impresión de datos (formateado de cadenas)

Existe alguna otra alternativa a la línea 11 ?
Código Python:
Ver original
  1. import numpy as np
  2.  
  3. t = np.array([0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96,102,108,114,120,126])
  4. I = np.array([22,23,35,71,103,111,109,100,86,71,59,47,39,32,28,24,22,21,20,19,19,18])
  5. O = np.array([22,21,21,26,34,44,55,66,75,82,85,84,80,73,64,54,44,36,30,25,22,19])
  6. I_medido = np.array([31,50,86,123,145,150,144,128,113,95,79,65,55,46,40,35,31,27,25,24,23,22])
  7. O_medido = np.array([31.0,27.8639473,27.50946632,36.16641502,54.45345972,76.48365895,96.03075768,\
  8. 110.77989121,117.60236863,119.41165035,115.89062393,108.88958298,99.46166492,89.72428831,\
  9. 79.67787179,70.48778375,62.19028931,54.97755505,48.24565838,42.54311695,38.02757641,34.39941769])
  10.  
  11. print "%s%26s%18s%19s%18s" % ("t(horas)", "I obs. (m3/seg.)", "O obs. (m3/seg.)", "I prev. (m3/seg.)",\
  12. "O calc. (m3/seg.)")
  13. print('{0} {0} {0} {0} {0}'.format('='*17))
  14. datos = [t,I,O,I_medido,O_medido]
  15. for i, datos in enumerate(t):
  16.     print('{0:>17} {1:>17.3f} {2:>17.3f} {3:>17.3f} {4:>17.3f}'.format(t[i], I[i], O[i], I_medido[i], O_medido[i]))
  17. print('{0} {0} {0} {0} {0}'.format('='*17))
  #2 (permalink)  
Antiguo 16/06/2013, 11:00
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Impresión de datos (formateado de cadenas)

Si puedes concatenar las cadenas (Lo cual no recomiendo).

Puedes usar format.

O puedes hardcodear el string.

Aquí te dejo varias opciones. Mi favorita es la opción 5.

Código Python:
Ver original
  1. # Opcion 1: old style C format
  2. print "%s%26s%18s%19s%18s" % ("t(horas)", "I obs. (m3/seg.)", "O obs. (m3/seg.)", "I prev. (m3/seg.)", "O calc. (m3/seg.)")
  3.  
  4. # Opcion 2: string concat
  5. print "t(horas)" + (" " * 10) + "I obs. (m3/seg.)" + (' ' * 2) + "O obs. (m3/seg.)" + (' ' * 2) + "I prev. (m3/seg.)" + (' ' * 1) + "O calc. (m3/seg.)"
  6.  
  7. # Opcion 3: new style format
  8. print "{}{:>26}{:>18}{:>19}{:>18}".format("t(horas)", "I obs. (m3/seg.)", "O obs. (m3/seg.)", "I prev. (m3/seg.)", "O calc. (m3/seg.)")
  9.  
  10.  
  11. # Opcion 4: hardcode
  12. print 't(horas)          I obs. (m3/seg.)  O obs. (m3/seg.)  I prev. (m3/seg.) O calc. (m3/seg.)'
  13.  
  14. # Opcion 5: Escribirlo en varias lineas
  15.  
  16. parms = (
  17.         "t(horas)",
  18.         "I obs. (m3/seg.)",
  19.         "O obs. (m3/seg.)",
  20.         "I prev. (m3/seg.)",
  21.         "O calc. (m3/seg.)",
  22. )
  23.  
  24. print "%s%26s%18s%19s%18s" % parms

Última edición por razpeitia; 16/06/2013 a las 16:42
  #3 (permalink)  
Antiguo 17/06/2013, 07:31
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Impresión de datos (formateado de cadenas)

Gracias razpeitia.
  #4 (permalink)  
Antiguo 17/06/2013, 11:31
 
Fecha de Ingreso: febrero-2011
Mensajes: 54
Antigüedad: 13 años, 8 meses
Puntos: 18
Respuesta: Impresión de datos (formateado de cadenas)

En formateo de nuevo estilo seria así:

Código Python:
Ver original
  1. parms =( "t(horas)",
  2.         "I obs. (m3/seg.)",
  3.         "O obs. (m3/seg.)",
  4.         "I prev. (m3/seg.)",
  5.         "O calc. (m3/seg.)")
  6.  
  7. print "{}{:>26}{:>18}{:>19}{:>18}".format(*parms)

PD. Nada, que ví el post y me preguntaba como se hacia, siempre se aprende algo por aquí.
Saludos.

Etiquetas: print
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:23.