py30.png

Formátování řetězců a čísel při tisku

Formátovací řetězce slouží k dokonalejšímu tisku nebo převodu proměnných a hodnot. Tato stránka ukáže, jak je v praxi používat. Více k tomuto najdete na http://docs.python.org/py3k/library/string.html#string-formatting.

Základ

>>> '{0}, {1}, {2}'.format('a', 'b', 'c')
'a, b, c'
>>> '{}, {}, {}'.format('a', 'b', 'c')  # pouze 3.1+
'a, b, c'
>>> '{2}, {1}, {0}'.format('a', 'b', 'c')
'c, b, a'
>>> '{2}, {1}, {0}'.format(*'abc')
'c, b, a'
>>> '{0}{1}{0}'.format('abra', 'cad')
'abracadabra'

Zaoukrouhlení na 3 desetinná místa

pi=22/7
text= "pi = {:0.3f}"
print (text.format(pi))

Odsazení a psaní znaménka i před kladné hodnoty

for i in range(-5,6):
    print ("{:+3n}".format(i))

Výpis proměnných (v závorkách)

verze="3.x"
pozdrav="Ahoj"
print ("{pozdrav}, ja jsem Python {verze}".format(**vars()))

Tisk za sebou

Chceme-li tisknout hodnoty za sebou na řádek, použijeme parametr end:

for i in 'abecede kocka prede':
    print (i, end="")

Případně i takto:

# ----pomoci funkce write() z modulu sys ---------------
import sys
for i in 'abecede kocka prede':
    sys.stdout.write(i),

print

Tisk na jedno místo (využijeme b)

import time, sys
for i in range(-5,6):
    print ("\b\b\b{:+n}".format(i), end="")
    sys.stdout.flush()
    time.sleep(0.5)

Použití se slovníkem

vyzva="Vitej {jmeno}! Dnes je {datum}. "
slovnik={"jmeno":"Aneto", "datum":"21.12.2012"}

print (vyzva.format(**slovnik))

py25.png

Formátování řetězců a čísel při tisku

Formátovací řetězce slouží k dokonalejšímu tisku nebo převodu proměnných a hodnot. Tato stránka ukáže, jak je v praxi používat. Teorii k tomuto najdete na http://docs.python.org/lib/typesseq-strings.html .

Zaokrouhlení na 3 desetinná místa (0.3)

pi=22.0/7
print "pi = %0.3f" % pi

#---- to samé jinak ----------------

pi=22.0/7
text= "pi = %0.3f"
print text % pi

Odsazení (3) a psaní znaménka i před kladné hodnoty (+)

for i in range(-5,6):
    print "%+3i" % i

Výpis proměnných (v závorkách)

verze=2.4
pozdrav="Ahoj"
print "%(pozdrav)s, ja jsem Python %(verze)s!" % vars()

Tisk za sebou

Chceme-li tisknout hodnoty za sebou na řádek, použijeme čárku za print:

for i in 'abecede kocka prede':
   print i,
Chceme-li se vyvarovat těch nadbytečných mezer, které však mohou být jindy výhodné,

můžeme použít následujících fíglů:

# --- pomoci \b ----------------------------------------
for i in 'abecede kocka prede':
    print "\b%s" % i,     #\b znaci navrat "voziku" zpet o jeden znak

# ----pomoci funkce write() z modulu sys ---------------
print                     # at to nemame nalepene na sobe
import sys
for i in 'abecede kocka prede':
    sys.stdout.write(i),

print

Tisk na jedno místo (využijeme b)

import time
for i in range(-5,6):
    print "\b\b\b%+i" % i,
    time.sleep(0.5)

Použití se slovníkem

vyzva="Vitej %(jmeno)s! Dnes je %(datum)s. "
slovnik={"jmeno":"Aneto", "datum":"3.8.2005"}

print vyzva % slovnik