4. cvičení

  • Vlastní funkce
  • Řetězec

Python: 1. Vlastní funkce

V minulých hodinách jsme volali funkce, které již byly implementovány (např. print('Hello ZPD1')). Na dnešním cvičení si ukážeme, jak psát funkce vlastní. Jako první zkusíme napsat funkci, která spočítá obsah obdelníka.

Řešení


Vysvětlení

Funkci definujeme příkazem def, za který napíšeme jméno funkce, pak do závorky seznam argumentů, které funkce potřebuje pro výpočet, a nakonec dvojtečku. Potom následuje odsazené tělo funkce - příkazy, které funkce provádí. Tělo může začít dokumentačním řetězcem, který popisuje, co funkce dělá. Příkazem return pak můžeš z funkce vrátit nějakou hodnotu. Tělo funkce může mít více příkazů, včetně podmínek, cyklů a podobně. Speciální příkaz return, který můžeme použít jenom ve funkcích, ukončí funkci a vrátí danou hodnotu ven z funkce. Chová se tedy trochu jako break, jen místo cyklu opouští celou funkci. Když funkce neskončí příkazem return, automaticky se vrátí hodnota None. Je to hodnota zabudovaná přímo do Pythonu, podobně jako True nebo False, a znamená "nic".

Python: 2. Vlastní funkce

Vyzkoušejte si následující kus zdrojového kódu.

Vytvoř v IDE Thonny nový soubor, ulož ho na "Plochu" pod jménem ZPD1t03funkce.py



Samostatná práce

1) Napište funkci, která vrátí obsah elipsy daných rozměrů. Příslušný vzoreček je S = pi * a * b, kde a a b jsou délky os. Strany a, b načtěte z klávesnice. Předpokládejte disciplinovaného uživatele, který zadá smysluplné hodnoty.

2) Napište funkci, která vrátí objem kvádru. Příslušný vzoreček je V = a * b * c. Strany a, b, c  načtěte z klávesnice. Předpokládejte disciplinovaného uživatele, který zadá smysluplné hodnoty.

Globální a lokální proměnné (angl. global and local variables)


Funkce může používat proměnné "mimo funkci" viz níže globální proměnná pi. Ale všechny argumenty a všechny proměnné, do kterých funkce přiřazuje (viz proměnná s), jsou úplně nové proměnné, které nemají nic společného s tím, co je "mimo funkci - venku" kolem funkce. Všem úplně novým proměnným se říká lokální proměnné, protože existují jen místně, v rámci volání jedné jediné funkce. Proměnné, které nejsou lokální, jsou globální - ty existují v celém programu. (Funkce, které mají náhodou lokální proměnnou stejného jména jako globální, "není viditelná v celém programu" - to jméno označuje lokální proměnnou.)

Příklad na zamyšlení: Jaké hodnoty program vypíše?


Řetězce (angl. strings)

Zápis řetězců


Řetězce v Pythonu můžeš normálně napsat jen na jeden řádek. Jinak by koncová uvozovka mohla být kdekoli a špatně by se hledala, kdybys na ni zapomněla. My potřebujeme také řetězce, které obsahují více řádků. Pokud chceme více řádků, tak musíme vložit do řetězce \n pro nový řádek.


Výběr znaků z řetězce


Další možnosti


Převod řetězce na malá či velká písmena - využití Metod ((angl. method))


Původní řetězec se nemění. Metoda vrátí nový řetězec, ten starý zůstává. Základní vlastnost řetězců v Pythonu: jednou existující řetězec se už nedá změnit, dá se jen vytvořit nějaký odvozený.

Příklad na iniciály

Načtěte z klávesnice jméno a příjmení osoby a zobrazte její iniciály.


Formátování řetězců


Řezání řetězců


Studijní materiály

Heineman G., Pollice G., Selkow S., Algorithms in a Nutshell , O'Reilly, USA 2008

Lutz, Mark, Learning Python , Sebastopol : O'Reilly 2009

Pilgrim, Mark, Ponořme se do Python(u) 3 , Edice CZ.NIC 2010

Beazley, David M.; Jones, Brian K., Python cookbook , Sebastopol : O'Reilly 2013

Summerfield, Mark, Python 3 : výukový kurz , Brno : Computer Press 2010

Pokud se zajímáte o Python více napište mi na email níže :)

Něco málo o mě

Jsem správcem neuroinformatické laboratoře na Západočeské univerzitě na Katedře informatiky a inženýrství. V rámci ZČU jsem pracoval na několika projektech (sémantický web v EEG / ERP portálu, OEN ontologie, vývojová koordinační porucha u dětí, kontrola pozornosti řidiče, analýza EEG u myší, asistenční systém řízený mozkovými vlnami pro osoby se sníženou pohyblivostí, BodyInNumbers).

Kontakt

Ing. Petr Brůha
Technická 8,
Plzeň, 30100, Česká republika
E: pbruha@kiv.zcu.cz
P: +420 377 63 2412
M: UN 324

Konzultační hodiny

Budova FAV, sekce NTIS, kancelář UN324

St: 13:00-13:55

Pá: 10:00-11:00