Python - 3. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Python - 3. lekcePython - 3. lekce

 

Python - 3. lekce

Google       Google       10. 6. 2005       68 166×

Práce s řetězci je jednou z velmi silných stránek jazyka Python. Řetězec je prostě text. Jedno písmeno, slovo, nebo celá věta či dokonce mnoho vět. Řetězce v Pythonu poznáte jednoduše – jsou v uvozovkách a většinou se v editorech zobrazují zeleně. Také se s nimi jednoduše pracuje. Když budete trochu pečliví, Python pod vaším vedením zvládne v řetězcích i češtinu se vším všudy. Podívejte se dále.

Reklama
Reklama

Úvod

V této lekci bych se rád podrobně zaměřil na řetězce, tedy text. Výklad doplníme nějakými příklady a úkolem.

Co je to řetězec

Práce s řetězci je jednou z velmi silných stránek jazyka Python. Řetězce jsou věci, které se uzavírají do uvozovek. Jednoduchých, dvojitých nebo trojitých. Je to celkem jedno, jen na začátku a konci musí být stejné. Trojité se používají u dlouhých textů, které přesahují přes několik řádků.

print "Superstar", 'SuperStar', '''SuperStar''', """SuperStar"""
print '''Zit
a
nechat zit'''

Řetězce jsou neměnné. Pokud je dáme do proměnné, tak to může vypadat, že se mění, ale ve skutečnosti vždy vzniká nová proměnná se stejným jménem, ale jiným obsahem.

jmeno="John"
jmeno=jmeno+' Lennon'

Paradox v porovnání s čísly. Vyzkoušejte na pythonovském shellu a přemýšlejte proč.

>>> print '2'+'2'
22
>>> print 2+2
4

Divné znaky

Existují tzv. escape [iskejp] znaky, sekvence, které slouží hlavně ke zkracování kódu a zpřehledňování tisku. Jsou to hlavně:

  • \n – Enter, nový řádek
  • \t – tabulátor

Použití:

>>> print "Dny v tydnu \nPondeli\nUtery\n\na tak dale....\n\nNedele"
Dny v tydnu
Pondeli
Utery

a tak dale....

Nedele

Co můžeme s řetězci dělat

Základní operace

Tak hlavně je můžeme:

  • spojovat = sčítat = +
  • klonovat = násobit celým číslem = *
  • můžeme také zjišťovat jejich délku = len(retezec) = kolik obsahuje znaků
  • umíme i načíst od uživatele nějaký text
pozdrav="ahoj"
pozdrav2= pozdrav+" Elisko"
print pozdrav2
print pozdrav*10

print len(pozdrav)  # kolik je v retezci znaku?
barva=raw_input('Jaka je tva oblibena barva?: ')

Pokročilejší funkce

Úplný přehled všech funkcí najdete samozřejmě v manuálu, zde jen pár.

  • Můžeme nechat text (větu) rozdělit na jednotlivá slova do seznamu.
  • Převod z řetězce na obyčejné číslo (pokud je v řetězci jen číslo) a naopak.
veta="Kobyla ma maly bok"
veta2= veta.split()  # vznikne seznam slov  
print veta2 

cisloText="2"
cisloObycejne= int(cisloText)
print type(cisloObycejne)
print cisloObycejne + 2  # vysledek je 4

cisloText=str(44)
print cisloText*2        # vysledek neni 88, ale .... 
print type(cisloText)

Přístup k jednotlivým písmenkům

V každém řetězci je vždy první, druhé, …, poslední písmeno. I v Pythonu tomu tak je, až na malý rozdíl, že první písmeno má index 0, tedy je to nulté písmeno. Logicky tedy poslední písmeno má index nebo-li pořadí délka-1; častěji se však říká, že má index jen −1. Na přístup k jednotlivým písmenům, znakům se používají hranaté závorky.

>>> pozdrav = "Ahoj"
>>> print pozdrav[0] # první = (nultý) prvek
A
>>> print pozdrav[1] # druhý prvek
h
>>> print pozdrav[-1] # poslední prvek, záporné indexy značí pořadí od konce
j
>>> delka=len(pozdrav)
>>> print delka
4
>>> posledniIndex=delka - 1
>>> print posledniIndex
3
>>> print pozdrav[posledniIndex] # posledni pismeno jinak

Umíme i provádět tzv. řezy, tj. vyjmout ze slova, věty jen určitou část:

>>> obsah="Zaciname s Pythonem"
>>> print obsah[11:17]
Python

Procházíme větou a provádíme operace nad znaky

Nedovedu si představit snadnější průchod textem, než má Python. Více než intuitivně se používá cyklus FOR.

veta="Kobyla ma maly bok"

for znak in veta:
    print znak
    if znak=="a":
        print "Nasel jsem 'a'"

Cyklus prochází jednotlivými znaky, postupně je pod sebe tiskne a když (IF) narazí na znak "a", tak něco něco vykoná.

Je ve větě to písmeno?

Na jednoduché zjišťování přítomnosti písmene stačí IF. Pokud bychom ale již chtěli vědět, kolikrát tam je, musíme použít výše uvedený cyklus FOR nebo nějakou funkci.

if "m" in veta:
    print "Veta obsahuje alespon jedno pismeno 'm'"

Čeština v pythonských řetězcích

Protože počítače i všechny základní programy vznikají hlavně v anglicky mluvících zemí, má každý národ problémy s tím, aby do něho dostal svoje jazykové speciality. U nás jsou to nabodeníčka, tedy háčky, čárky. Již jsem i zaslechl názor, že díky Mistrovi Janu Husovi naše národní hospodářství ztrácí milióny korun, protože právě to zavádění nabodeníček do programů stojí nemalé úsilí. S tím rozhodně nemohu souhlasit a tímto mnohokráte děkuji Mistrovi J. Husovi za jeho vylepšení, zkrášlení, zeštíhlení původního tvaru abecedy. Počítače totiž nejsou všechno.

Různé druhy kódování

Historicky zde máme několik druhů kódování (vybírám z PSPadu, nabídka Formát):

  • Windows (cp1250)
  • Latin2 (cp852)
  • ISO 8859-2 (iso-8859-2)
  • UTF8 (utf-8)

Python klade důraz na to, aby pythonské programy s češtinou fungovaly správně ve všech prostředích a platformách. Už když pracujete jen ve Windows v IDLE, tak velmi pravděpodobně, když tam napíšete bez ničeho dalšího české znaky do řetězců, to bude pod IDLE běhat správně. Jakmile to ale spustíte z Total Commanderu, a tedy v DOSu, tak tam již budete mít paznaky.

Je třeba dodržet 3 hlavní zásady

  • Na prvním řádku uvést pythonskou definici kódování, tedy např.:
    # -*- coding: cp1250 -*-
  • V tom stejném kódování to uložit – v PSPadu navolit menu Format → Windows a uložit.
  • Před všechny řetězce dát kouzelný znak 'u', tedy např.:
    # -*- coding: cp1250 -*-
    
    veta=u"Žluťoučký kůň pěl ďábelské ódy."
    print veta

    'u' znamená Unicode. U začátečnických programů nicméně jsou důležitější věci než čeština, takže jsem to zde uvedl jen pro pořádek. Není zatím třeba tomu věnovat velkou pozornost. Problém může nastávat hlavně u raw_input(), ale jak jsem říkal, zatím bych zůstával u cestiny bez hacku a carek. U okenních programů pak již čeština funguje bez problémů – používá se převážně utf-8. Ale o tom později.


Úkol

Na vstupu je dána věta: "Python je skvely objektove orientovany, interpretovany a interaktivni programovaci jazyk."

Zajímá mě:

  • Kolik obsahuje znaků a slov?
  • Kolik je tam písmen 'a', 'e' a mezer?
  • Vytiskněte slovo "python" tolikrát, kolikrát je tam písmeno 'e'
  • Je tam písmeno 'x'?
  • Vytiskněte větu v obráceném pořadí písmen.
  • Vytiskněte první, prostřední a poslední písmeno.
  • 12. písmeno vytiskněte 50×.
  • Sestavte novou větu, kde budou všechna 'a' nahrazena za 'A'.
  • Vymyslete a zpracujte jeden úkol k této větě sami.

Extra úkol (nepovinný)

  • Jaké všechny znaky jsou ve větě? (stačí jaké, ne kolik) Tip: bez seznamů to asi nepůjde…

Je možné, že jsem neprobral vše, co máte v úkolu. Hledejte tedy v Helpu, v učebnicích, nebo se ptejte. Na všechna řešení se těším.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Pavel KosinaAutor programuje v Pythonu.
Web    

Nové články

Obrázek ke článku NEWTON Media prohledá 200  milionů mediálních zpráv během sekund díky Cisco UCS

NEWTON Media prohledá 200 milionů mediálních zpráv během sekund díky Cisco UCS

Česká společnost NEWTON Media provozuje největší archiv mediálních zpráv ve střední a východní Evropě. Mezi její zákazníky patří například ministerstva, evropské instituce nebo komerční firmy z nejrůznějších oborů. NEWTON Media rozesílá svým zákazníkům každý den monitoring médií podle nastavených klíčových slov a nabízí online službu, kde lze vyhledat mediální výstupy v plném znění od roku 1996.

Reklama
Reklama
Obrázek ke článku Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý