Python, espacios para impresion en pantalla

Iniciado por metalost, 21 Mayo 2017, 00:44 AM

0 Miembros y 1 Visitante están viendo este tema.

metalost

Buenas, disculpen las molestias, alguien me podria indicar/ayudar sobre este tema de imprimir en pantalla? Si vemos el primer codigo que esta aqui abajo, vemos que si lo ejecutamos, este se desconfigura del espacio en el que se deberia imprimir

Código (python) [Seleccionar]

i = 1
print "i\ti**2\ti**3\ti**5\ti**10\ti**20"
while i <= 10:
    print i, '\t', i**2, '\t', i**3, '\t', i**5, '\t', i**10, '\t', i**20
    i += 1




Pero si corremos este segundo codigo, podemos apreciar que ese espacio ya esta corregido... Mi duda aqui es, que no entiendo muy bien como opera este segundo...

Código (python) [Seleccionar]

i = 1
print "%-4s%-5s%-6s%-8s%-13s%-15s" % \
      ('i', 'i**2', 'i**3', 'i**5', 'i**10', 'i**20')
while i <= 10:
    print "%-4d%-5d%-6d%-8d%-13d%-15d" % (i, i**2, i**3, i**5, i**10, i**20)
    i += 1


Por ejemplo, alguien me podria indicar/pasar algun documento, sobre como funciona el " % " No entiendo muy bien para que sirve... tampoco entendi muy bien para que sirve el " %-4d%" ese %, ese -4 y la d y otra vez el %

Basicamente el codigo es eso... ¿Alguien podria "iluminarme" por favor?

engel lex

la tabulación en consola usualmente es representada por 8 espacios

entonces los numeros que tengas menos de 8 cifras de largo estaràn dentro de la tabulaciòn (en estaos ejemplos la barra | estará en el espacio siguiente al multiplo de 8)
>>> print "123456789\n\t|"

123456789
        |


la tabulaciòn es el espacio justo tras esa barra y las tabulaciones siempre serán una posición multiplo de 8, así que cuando un numero tiene 8 cifras de largo, la tabulación queda en la posición 9 y como la tabulación representa en multiplos de 8, se moverá al espacio 16...

>>> print "1234567890123456789\n\t|1234567\t|\n12345678\t|

1234567890123456789
1234567 |
12345678        |


por eso se te descuadra...


tu segundo codigo formatéa los espacios a mano

el % es equivalente al uso de printf en C, %s imprimirá un string %d un digito, etc, pero el formato %-4s lo que le dice es "imprime un string y si no llega a 4 de llargo, rellena con espacios"

aqui hay unos ejemplo simples
http://interactivepython.org/runestone/static/pip/StringFormatting/interpolation.html
y aquì algo màs complejo
https://pyformat.info/
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.