Weby NPINPIMojeEduEduRevueRevize RVPProhlédnout RVPZapojme všechnyVedeme školu
npi
npi
  • Celá nabídka
  • Přihlásit se
  • Domovská stránka
  • Prohlédnout celou nabídku

  • Přihlásit se

MojeEdu

  • Domovská stránka
  • Celá nabídka
  • Pomoc k RVP PV
  • Pomoc k RVP ZV
  • Pomoc k RVP ZŠS
  • Nabídka IPS Kurikulum
  • Metodické kabinety
  • Jak na plynulý přechod z MŠ do ZŠ?
  • Spomocník
  • Záznamy webinářů
  • Proč MojeEdu?
  • Co je MojeEdu?
  • Jak používat MojeEdu?
  • Export produktů (JSON)
  • Export produktů (CSV)

Weby NPI

  • NPI
  • Revize RVP
  • Prohlédnout RVP
  • Digitalizace ve vzdělávání
  • Zapojme všechny
  • Vedeme školu

Kontakt

Konzultační centrummojeedu@npi.czSenovážné náměstí 25,
110 00 Praha 1

Sociální sítě


EU logo

  • Prohlášení o přístupnosti
  • Newsletter

NPI ČR © 2026

Odborný článek
Digitalizace ve vzdělávání

Python v hudbě: podmínky podruhé

Pomocí programovacího jazyka Python prozkoumáme možnosti, jak přenášet a kódovat informace, které budeme demonstrovat na hudebních analogiích. V páté aktivitě ze série Python v hudbě si ukážeme další možnosti podmínek a rozšíříme náš předchozí skript. Pomocí podmínek ho také zkrátíme a zjednodušíme. Tato metoda vypočítá interval mezi dvěma zadanými tóny na základě předem definované stupnice a intervalového systému.

  • Typ materiálu: cvičení 
  • Škola: gymnázium
  • Ročník: kvarta
  • Metody: cvičení
  • Vzdělávací obor: informatika
  • Tematický okruh: algoritmizace a programování
  • Očekávané výstupy:Analyzuje problém, rozdělí problém na menší části, rozhodne, které je vhodné řešit algoritmicky, své rozhodnutí zdůvodní; sestaví a zapíše algoritmy pro řešení problému.
  • Časová dotace:
    • Výuka: 45 minut
    • Příprava: 30 minut
  • Pomůcky, hardware a software
    • Učitel: dataprojektor, výpočetní zařízení (PC, notebook, tablet)
    • Žák: výpočetní zařízení (PC, notebook, tablet)

Zdroje:

  • https://www.w3schools.com/python

10. 3. 2026

Autor
PK

Pavel Konrád

Další tvorba autora
Kód

portal-24359

  • gymnázium
  • Informatika (rvp gv 2021)
  • Informatika
  • Algoritmizace a programování
  • analyzuje problém, rozdělí problém na menší části, rozhodne, které je vhodné řešit algoritmicky, své rozhodnutí zdůvodní; sestaví a zapíše algoritmy pro řešení problému

Rubrika
Odborný článek
Typ článku
Praktický
Stupeň vzdělávání
Gymnaziální vzdělávání
Týká se jazyka
Čeština

Seriál

Python v hudbě

  1. 1.Kódování v Pythonu skrze hudbu
  2. 2.Python v hudbě: Úvod do programování
  3. 3.Python v hudbě: skript na akordy
  4. 4.Python v hudbě: intervaly jako seznam a metody
  5. 5.Python v hudbě: určení intervalů pomocí podmínek a logických operátorů
  6. 6.Python v hudbě: podmínky podruhé
  7. 7.Python v hudbě: cykly v jazyce Python, cyklus For
  8. 8.Python v hudbě: Metronom
  9. 9.
Python v hudbě: funkce
  • 10.Python v hudbě: ladička
  • 11.Python v hudbě: generátor chromatiky
  • Potřebné vstupní znalosti a dovednosti

    Oborové

    • Základní orientace v programovacím jazyku Python
    • Znalost proměnných a datových typů

    Digitální dovednosti

    • Pokročilé ovládání počítače
    • Schopnost postupovat podle návodu
    • Orientace v základní terminologii algoritmizace a programování

    Vzdělávací cíle:

    • naučit se větvit algoritmus podle logických tvrzení

    Přínos využití digitálnícg technologií

    Logické operátory a pravdivostní hodnoty jsou základní operace, které můžeme použít při práci s daty. Díky skládání algoritmu nemusíme vypisovat stále se opakující informace, které tak necháváme generovat program automaticky. 

    Metodická poznámka

    Tato aktivita navazuje na sérii Python v hudbě 04 – Určení intervalu podle podmínek. V této aktivitě studenti vylepšují již funkční algoritmus, přičemž předpokládají různé scénáře, jakými se program může ubírat. Pomocí if a else tak rozhodují, jak bude program v různých scénářích postupovat. Díky if-else náš celý skript zjednodušíme a zkrátíme a tak se přiblížíme zase víc k přehlednému a logickému kódu.

    Výklad

    Program je především naprogramován tak, aby reagoval na uživatelské vstupy. Ty můžou mít různou podobu. V našem předchozím skriptu jsme pracovali s funkcí input(), do které mohl uživatel zadat nějaké hodnoty, které se uložily do proměnné x.

    Jenže co když uživatel nepochopí, že má do pole input zadávat pouze tóny pro evropskou hudbu, a bude chtít určit např. interval mezi tóny z a s, které nemáme nadefinované v proměnné scale?

    Jestliže dovolíme uživateli s programem interagovat, měli bychom také zajistit, aby každý vstup byl nějakým způsobem ošetřený pro případ, že uživatel zadá hodnoty, se kterými program nepočítá. Existuje několik zavedených metod, jak ošetřovat vstupy, a jeden z nejjednodušších je ošetřit je podmínkou. Normálně se používají v Pythonu tzv. „výjimky“. Na ty bychom ovšem museli umět tvořit funkce, které v této sérii probereme později. Proto to v tuto chvíli zjednodušíme, ale princip zachováme. Použijeme totiž již známé if a dnes k němu přidáme i else.

    Každá podmínka v programování má totiž i druhou část. Program musí vědět, že pokud se v programu děje „něco“, tak se podle toho „něčeho“ program zachová. Programu ale také musíme říct, co má dělat, když se to „něco“ nestane. K tomu slouží právě ta druhá část podmínky: else. Pojďme si to ukázat na pseudokódu.

    If (hudebnik = bubenik)

    Noty = false

    Else:

    noty = true

    Kód nám říká, že když se objeví v proměnné hudebnik hodnota bubeníka, program bude vědět, že noty se nestanou skutečností. V každém jiném případě, kdy hudebníka bude představovat kdokoliv jiný, budou noty potřeba. Můžeme přidat ještě rozšiřující podmínku, kterou již známe z minula: elif. Může se totiž objevit ještě nějaká jiná skutečnost, která by mohla nastat.

    If (hudebnik = bubenik)

    Noty = false

    Elif (hudebnik = violista)

    Program end

    Else:

    noty = true

    Ve skutečnosti takových situací může nastat nespočet. Taková zkouška muzikantů může mít mnoho dalších nevyzpytatelných proměnných.

    If (hudebnik = bubenik)

               Noty = false

               Rytmus = true

    Elif (hudebnik = zpevak)

         Noty = false

         Rytmus = false

         Zkouska = zpozdeni

    Elif (hudebnik = basak)

         Noty = true

         Rytmus = true

         Komunikace = false  

    Elif (hudebnik = kytarista)

         Problem = true

    Elif (hudebnik = violista)

         Program end

         Else:

    noty = true

    Pomocí podmínek if, elif a else můžeme program rozvětvit do několika možných situací. Pojďme tedy zkusit ošetřit první vstup uživatele, kde zajistíme, že v případě, že do vstupu zadáme něco, co tam nepatří, program začne „nadávat“ a upozorní nás, že takové vstupy zadávat nelze. Nejdříve si pojďme nakopírovat začátek kódu z minula.

    Uživatel teď může vložit nějakou hodnotu do proměnné x a y. Pojďme si ukázat, jak bychom mohli uživatele upozornit na to, že takovou interakci, kterou se právě rozhodl použít, jsme nepředpokládali.

    Všimněme si, že jsme přidali do podmínky logický operátor not in. Python je v tomto ohledu velmi přívětivý a spoustu věcí nám takto ulehčuje. Logický operátor not in porovná hodnoty v proměnné scale s proměnnou x a vrátí True, pakliže ji najde. Podmínka se tedy vyhodnotí buď jako True, nebo False a podle toho pokračuje program dále. Rovnou přidáme podmínku, která bude takto hlídat i druhý vstup uživatele, a také přidáme kus kódu, takže v případě, že program najde shodu, rovnou vstupy převede na čísla, abychom mohli s proměnnými dále pracovat. Celý kód tedy zatím vypadá nějak takto:

    Kód má stále spoustu závažných trhlin a nedostatků. Interakce je zde velmi omezená a v reálném nasazení by takováto validace nestačila. Jelikož kód nám slouží pouze jako demonstrace a my víme, jak s tímto naším programem máme interagovat, můžeme se posunout na další část programu a zkusit zase o něco zpříjemnit celkovou interakci.

    Minule jsme vytvořili i výpočet, který nám sdělí, jaká je vzdálenost mezi dvěma tóny. Pojďme si ho připomenout a znovu si ho nakopírujeme do našeho současného řešení. V tomto řešení se ale nachází jeden závažný nedostatek. V případě, že zadáme první tón, který je v proměnné scale výše než druhý tón neboli má větší hodnotu, program začne vracet špatné hodnoty. Pojďme tedy vytvořit podmínku, že v případě, že bude první tón větší než ten druhý, program výpočet obrátí:

    Máme tedy základně ošetřené vstupy uživatele, máme výpočet pro vzdálenost dvou tónů směrem nahoru i dolů. Jediné, co nám zbývá, je nějakým způsobem všechny výpočty zobrazit a přeložit do naší řeči. Možná vás již napadlo, že bychom nemuseli pracně vypisovat opět všechno větvení spjaté s tím, jaké číslo je jaký interval. Existuje jednodušší řešení, kterým si výrazně zkrátíme náš kód.

    Když už zjistíme, o kolik tónů jsou od sebe jednotlivé tóny vzdálené, mohli bychom pak jednoduše toto číslo použít jako hledací index v nově vytvořené proměnné, která bude obsahovat na jednotlivých indexech jména intervalů. Abychom je nemuseli vypisovat, zde je seznam intervalů.

    Pojďme tedy zkusit utvořit kus našeho kódu a poskládat jednotlivá řešení do sebe.

    Zadání

    1. Nejdříve získáme vstup od uživatele: Použijeme funkci input() k získání dvou tónů od uživatele.
    2. Kontrola vstupu: Zkontrolujeme, zda zadané tóny jsou součástí předem definované stupnice. Pokud ano, uložíme pozici tónu pomocí metody index.
    3. Proměnná scale obsahuje seznam se jmény not, které se používají v západní hudbě. Každý prvek seznamu je řetězcem, který odpovídá jednomu z tónů západní stupnice. Například první prvek seznamu c odpovídá notě C.
    4. Proměnná intervals obsahuje seznam se jmény hudebních intervalů. Každý prvek seznamu je řetězcem, který popisuje vzdálenost mezi dvěma tóny v západní hudbě. Například první prvek seznamu Prima označuje vzdálenost mezi dvěma stejnými notami (např. C a C).
    5. Poté následuje blok kódu s podmínkami. Pokud je vstupní hodnota x nebo y rovna něčemu, co není v seznamu scale, program vypíše chybovou zprávu a skončí. V opačném případě program pokračuje dál a zjišťuje se pozice tónů v seznamu scale. Pokud jsou oba tóny platné, program vypočte vzdálenost mezi nimi a vypíše odpovídající interval ze seznamu intervals. Pokud je výpočet menší než 0, znamená to, že první tón je ve skutečnosti níže než druhý tón, takže program vypočítá interval směrem dolů.
    6. Konečný výstup by měl tedy být:

    print(intervals[vypocet], " směrem dolů.")

    Nebo:

    print(intervals[vypocet], " směrem nahoru.")

    Pokud bychom chtěli tento program rozšířit, mohli bychom například přidat další možnosti chyb, třeba pokud uživatel zadá neplatnou kombinaci tónů nebo více než dva tóny. Také bychom mohli přidat možnost zobrazit uživateli seznam platných tónů, aby si mohl vybrat z nabídky.

    Řešení:

    Úloha 1: Zadejte dva tóny a program vypočte vzdálenost mezi nimi a vypíše odpovídající hudební interval. Program kontroluje, zda jsou zadané tóny platné, a v případě neplatného vstupu vypíše chybovou zprávu.

    Zkušenosti s použitím materiálu

    V praxi se ukázalo, že tento materiál je vynikajícím samostatným cvičením. Studenti, kteří jsou napřed, zkouší vymyslet svá invenční řešení a vylepšují tak předešlé skripty. Se studenty, kteří plně nechápou podmínky, je to skvělá příležitost k opakování předešlé látky a jejímu upevnění v novém kontextu. Učitel může postupně odkrývat řešení či studentům připravit různé nápovědy, předpřipravit syntaxi apod.

    Klíčová slova

    • hudba
    • NPO 3.1 DIGI
    • programovací jazyk
    • programování
    • python
    cc

    Licence

    Tento materiál je publikován pod licencí Creative Commons – Uveďte původ – Neužívejte komerčně – Nezpracovávejte 4.0.

    10. 3. 2026

    Autor
    PK

    Pavel Konrád

    Další tvorba autora
    Kód

    portal-24359