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

Python - 3. lekcePython - 3. lekce

 

Python - 3. lekce

Google       Google       10. 6. 2005       81 912×

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.


Ú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 Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý