Edit detail for FormatovaniRetezcu revision 2 of 1

2
Editor: geon
Time: 2011/10/15 18:13:48 GMT+2
Note: pridavani znacek 2x-3x

changed:
-
.. image:: py30.png
   :align: right


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


--------------

.. image:: py25.png
   :align: right


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


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