Nauč se Python > Kurzy > „Experimentální“ začátečnický kurz PyLadies > Proměnné

Čtverec

Teď se vrátíme do základní školy a zkusíme si napsat program, který vypočítá obsah a obvod čtverce, u kterého známe délku strany.

Vytvoř si v editoru nový soubor a ulož ho do adresáře pro dnešní lekci pod jménem ctverec.py. Zkus do něj napsat program, který spočítá a vypíše obvod a obsah čtverce se stranou 356 cm.

Po spuštění by se mělo vypsat něco jako:

Obvod čtverce se stranou 356 cm je 1424 cm
Obsah čtverce se stranou 356 cm je 126736 cm2

Pro připomenutí, obvod čtverce se stranou a se dá vypočítat jako O = 4a a obsah jako S = a².

Matematika!

Doufám, že tenhle příklad nikoho neodradí, ale „počítač“ je holt od slova počítat. Není třeba se děsit; na základy programování si vystačíme s matematickými znalostmi ze základní školy.

Výsledky by měl samozřejmě spočítat Python; číslo 1424 nebo 126736 do programu nepiš.
Jestli si nevíš rady, podívej se na program printing.pylekce o print, kde jeden řádek dělá něco podobného.

Řešení

Menší čtverec

Jestli všechno funguje, zkus změnit program tak, aby počítal obsah a obvod čtverce o straně 123 cm.

Řešení

Proměnné

Zvládneš to i pro stranu 3945 cm, 832 cm, 956 cm? Baví tě přepisování čísel? Kdyby byl program delší (několikastránkový), jak bys zajistila, že jedno z těch čísel nepřehlédneš?

Existuje způsob, jak program napsat, aniž bys musela pokaždé přepisovat všechna čísla: stranu čtverce si „pojmenuješ“ a potom používáš jenom její jméno. V Pythonu na pojmenovávání hodnot slouží proměnné (angl. variables). Používají se takto:

strana = 123
print('Obvod čtverce se stranou', strana, 'je', 4 * strana, 'cm')
print('Obsah čtverce se stranou', strana, 'je', strana * strana, 'cm2')

Neboli: napíšeš jméno, pak rovnítko a za rovnítkem výraz, jehož hodnota se do proměnné přiřadí. Když potom napíšeš jméno proměnné ve výrazu, použije se zapamatovaná hodnota.

Je zvykem dát před i za rovnítko po jedné mezeře.

To nás vede k jedné ze základních programátorských zásad: „neopakuj se“ (anglicky Don't repeat yourself, DRY). Když se někde opakuje stejná hodnota, stejný výraz nebo stejný kus kódu, dobrá programátorka ten kus programu pojmenuje a několikrát pak použije jen jméno. Často se totiž stává, že je program potřeba změnit – buď je v něm chyba nebo se změní zadání. A potom je mnohem jednodušší změnu udělat jen na jednom místě.

Kromě toho dobrá jména usnadňují čtení programu: 4 * strana nepotřebuje komentář, ale u 4 * 183 není příliš jasné, co ta čísla znamenají.

Kruhy

Tohle je příklad navíc! Klidně ho přeskoč.

Změna zadání! Zkus program doplnit tak, aby kromě čtverce počítal i obvod a obsah kruhu se stejným poloměrem, jakou má čtverec stranu.

Pro připomenutí, obvod kruhu s poloměrem r je o = 2πr, obsah S = πr² a π je zhruba 3,1415926.

Všechna čísla, která matematici označují jen jedním písmenkem (klidně řeckým), vhodně pojmenuj.

Komentáře

Program si teď zpřehledníme komentářem. V Pythonu komentář začíná dvojkřížkem (#), za který můžeš napsat úplně cokoliv – až do konce řádku bude Python všechno ignorovat.

Komentáře jsou důležité: programy nečte jen počítač, ale i lidé. Do komentářů si můžeš poznamenat, co dělá celý program, vysvětlit, jak funguje nějaká složitější část, nebo vyjasnit něco, co není jasné přímo z programu.

Vždycky, když píšeš program, snaž se vžít do role někoho, kdo potom ten program bude číst, a všechno, co by mohlo být nejasné, upřesnit v komentářích. (Nejčastěji to budeš číst sama, třeba po několika měsících, takže tím pomáháš sama sobě!)

# Tento program počítá obvod a obsah čtverce.

strana = 123  # v centimetrech
print('Obvod čtverce se stranou', strana, 'je', 4 * strana, 'cm')
print('Obsah čtverce se stranou', strana, 'je', strana * strana, 'cm2')

Píšeš-li komentáš na stejný řádek jako kód, je zvykem před # dát dvě mezery (nebo i víc). Za # pak patří právě jedna.

Načítání vstupu

Nakonec se podíváme, jak zařídit, aby číslo nemuselo být zapsáno v programu, ale aby ho mohl uživatel zadat sám.

Stejně jako když ses naučila používat print i tady jen řeknu, že na to použijeme funkce. Detaily si vysvětlíme později; pro teď to budou kouzelná zaříkadla:

  • Chceš-li načíst řetězec (text), použij:

    promenna = input('Zadej řetězec: ')
    
  • Chceš-li načíst celé číslo, použij:

    promenna = int(input('Zadej číslo: '))
    
  • Chceš-li načíst desetinné číslo, použij:

    promenna = float(input('Zadej číslo: '))
    

Místo řetězce 'Zadej …' se dá napsat i jiná výzva. A výsledek se samozřejmě dá uložit i do jiné proměnné než promenna.

Hotový program může vypadat takto:

# Tento program počítá obvod a obsah čtverce.

strana = float(input('Zadej stranu čtverce v centimetrech: '))
print('Obvod čtverce se stranou', strana, 'je', 4 * strana, 'cm')
print('Obsah čtverce se stranou', strana, 'je', strana * strana, 'cm2')