Skip to content

Latest commit

 

History

History
348 lines (244 loc) · 6.35 KB

index.md

File metadata and controls

348 lines (244 loc) · 6.35 KB

{%- if var('pyladies') -%} {% set rootname = 'pyladies' %} {%- else -%} {% set rootname = 'naucse-python' %} {%- endif -%}

🐍 🐢

V této lekci si vyzkoušíš želví kreslení.

Pusť Python v interaktivním módu (bez souboru .py).

$ python

>>>

[note] (Znaky > a $ píše počítač, ne ty. Na Windows bude místo $ znak > a před $ nebo > může být ještě něco dalšího.)

Pak napiš:

from turtle import forward

forward(50)

Ukáže se okýnko se šipkou, které nezavírej. Dej ho tak, abys viděla i příkazovou řádku i nové okýnko.

A kde je ta želva?

Želva je převlečená za šipku. Ale dá se odmaskovat:

from turtle import shape

shape('turtle')

Otáčení

Želva se umí otáčet a lézt po papíře. Na ocase má připevněný štětec, kterým kreslí čáru.

from turtle import left, right

forward(50)
left(60)
forward(50)
right(60)
forward(50)

Zkus chvíli dávat želvě příkazy. Když se ti něco nelíbí, můžeš buď zavřít kreslící okno, nebo naimportovat a použít funkci clear().

Želví program

Interaktivní mód je skvělý na hraní, ale teď přejdeme zase na soubory.

Vytvoř si soubor ~/{{ rootname }}/03/zelva.py.

[note] Adresář ~/{{ rootname }} se u tebe může jmenovat jinak – viz [instalace Pythonu]({{ lesson_url('beginners/install') }}).

Jestli chceš pro soubor použít jiné jméno, můžeš, ale nepojmenovávej ho turtle.py.

Do souboru napiš příkazy na nakreslení obrázku a na konec zavolej funkci exitonclick (importovanou z modulu turtle).

[note] Otázka Co dělá funkce exitonclick?

Až to budeš mít hotové, zkusíme začít kreslit obrázky:

Čtverec

Nakresli čtverec.

Želví čtverec

Čtverec má čtyři rovné strany a čtyři rohy po 90°.

{% filter solution %}

from turtle import forward, left, exitonclick

forward(50)
left(90)
forward(50)
left(90)
forward(50)
left(90)
forward(50)
left(90)

exitonclick()

{% endfilter %}

Obdélník

Nakresli obdélník.

Zkus zařídit, aby se po nakreslení „dívala” želva doprava (tak jako na začátku).

Želví obdélník

{% filter solution %}

from turtle import forward, left, exitonclick

forward(100)
left(90)
forward(50)
left(90)
forward(100)
left(90)
forward(50)
left(90)

exitonclick()

{% endfilter %}

Tři čtverce

Nakresli tři čtverce, každý otočený třeba o 20°.

Tři želví čtverce

{% filter solution %}

from turtle import forward, left, exitonclick

forward(50)
left(90)
forward(50)
left(90)
forward(50)
left(90)
forward(50)
left(90)

left(20)

forward(50)
left(90)
forward(50)
left(90)
forward(50)
left(90)
forward(50)
left(90)

left(20)

forward(50)
left(90)
forward(50)
left(90)
forward(50)
left(90)
forward(50)
left(90)

exitonclick()

{% endfilter %}

Jde to líp?

Tolik kódu! Tohle musí jít nějak zjednodušit!

Jde. Pojďme se naučit příkaz for.

Opakování

Zkus co dělá následující program. Ulož ho třeba do ~/{{ rootname }}/03/cyklus.py

for cislo in range(5):
    print(cislo)

for pozdrav in 'Ahoj', 'Hello', 'Hola', 'Hei', 'SYN':
    print(pozdrav + '!')

Co dělá příkaz for?

{% filter solution %} Příkaz for opakuje část programu. Opakují se příkazy, které jsou pod for-em odsazené. Podobně jako se if vztahuje jen na odsazené příkazy pod ním.

Příkaz for x in range(n): opakuje příkazy pod ním n-krát a proměnnou x nastaví postupně na čísla od 0 do n-1.

Příkaz for x in a, b, c, d, ...: opakuje příkazy pod ním; proměnnou x nastavuje postupně na a, b, c d, ... {% endfilter %}

Přepisování proměnných

Zkus popsat, jak pracuje následující program.

soucet = 0

for cislo in 8, 45, 9, 21:
    soucet = soucet + cislo

print(soucet)

{% filter solution %} Příkaz soucet = soucet + cislo vypočítá hodnotu soucet + cislo, tedy přičte aktuální číslo k součtu a výsledek uloží do proměnné soucet. Nová hodnota součtu se pak použije v dalším průchodu cyklem.

Na začátku je součet 0 a na konci se součet všech čísel vypíše. {% endfilter %}

Čtverec

A znovu ke kreslení, tentokrát s použitím cyklů.

Nakresli čtverec.

V programu použij forward jen dvakrát: jednou v importu, jednou jako volání.

Želví čtverec

{% filter solution %}

from turtle import forward, left, exitonclick

for i in range(4):
    forward(50)
    left(90)

exitonclick()

{% endfilter %}

Přerušovaná čára

Funkce penup a pendown z modulu turtle řeknou želvě, aby přestala, resp. začala kreslit.

Zkus nakreslit přerušovanou čáru.

Želva a přerušovaná čára

{% filter solution %}

from turtle import forward, penup, pendown, exitonclick

for i in range(10):
    forward(10)
    penup()
    forward(5)
    pendown()

exitonclick()

{% endfilter %}

Pak zkus zařídit, aby jednotlivé čárky byly postupně větší a větší.

Želva a přerušovaná čára

[note] Nápověda

Co přesně dělá příkaz for? Dá se využít proměnná, kterou nastavuje?

{% filter solution %}

from turtle import forward, penup, pendown, left, exitonclick

for i in range(20):
    forward(i)
    penup()
    forward(5)
    pendown()

exitonclick()

{% endfilter %}

Tři čtverce

Nakonec nakresli 3 čtverce, každý otočený o 20°. Tentokrát už víš, jak to dělat chytře: opakuj pomocí příkazu for, ne kopírováním kódu.

Tři želví čtverce

{% filter solution %}

from turtle import forward, left, right, speed, exitonclick

for i in range(3):
    for j in range(4):
        forward(50)
        left(90)
    left(20)

exitonclick()

{% endfilter %}

Úkol navíc

Máš-li hotovo, zkus nakreslit schody:

Želví schody

A máš-li i schody, zkus nakreslit těchto šest (nebo sedm?) šestiúhelníků:

Želví plástev