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))
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