Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň
Pokročilé funkce
Polymorfní funkce
V této kapitole budeme zkoumat nové typy funkcí, různé způsoby jejich použití a jak je co nejlépe využít při programování v Pythonu.
V této úrovni začínáme s polymorfními funkcemi, což jsou funkce, které lze použít s různými datovými typy. Je to jako používat stejnou funkci k různým účelům, univerzální funkci.

Cíl
Zkontrolujte stav plodin a prasátek a potvrďte dodávky zásob pomocí polymorfních funkcí.
Brzy by měly být nějaké plodiny, které je třeba sklidit, aby mohly být expedovány k prodeji. Prasátka také potřebují, aby jim bylo doručeno krmivo, a bylo by dobré zjistit, kolik krmiva je potřeba objednat. K dokončení těchto úkolů můžete použít polymorfní funkce, v tomto případě využijeme funkci len().
Polymorfní funkce jsou funkce, které lze použít s více různými datovými typy. Například funkce len() se používá ke zjištění délky objektů; tyto objekty mohou být různého typu, jako jsou seznamy, slovníky nebo dokonce řetězce. Začněte odečítáním počtu na nižších X znacích na poli, než přejdete k vyšším X značkám ve stodole.
Uvnitř ohrady u cesty je několik prasátek, jejichž jména jsou "Peggle", "Peter", "Piper", "Pedro". Vložte jejich jména do seznamu, abyste je mohli spočítat. Například takto: piglets = ["Peggle", "Peter", "Piper", "Pedro"]. Vytvořte proměnnou jménem number, do které uložíte délku seznamu pomocí funkce len(), například: number = len(piglets).
Jakmile máte seznam a proměnnou připravené, jděte k tmavému X značce před ohradou prasátek, otočte se k ohradě a pomocí funkce speak() spočítejte prasátka. Použijte proměnnou number k získání výsledku, například: player.speak("There are d% Piglets" % (number) )
Poté, co zkontrolujete prasátka, jděte ke světlé X značce u pole, otočte se k plodinám a spočítejte je. Existují tři (3) různé typy plodin: "Tomatoes", "Pumpkins", "Eggplant". Spočítejte, kolik plodin od každého druhu roste, a uložte je do slovníku, například takto:
crops = {} crops["Tomato"] = number of tomato crops crops["Pumpkin"] = number of Pumpkin crops crops["Eggplant"] = number of Eggplant crops
Jakmile do slovníku vložíte správné hodnoty, použijte funkci speak() spolu s funkcí len() pro spočítání počtu dostupných druhů plodin, například takto: player.speak("There are d% types of crops" % ( len(crops) ) ).
Poté, co spočítáte prasátka i plodiny, jděte k tmavému X značce na fialové rohoži a zkontrolujte objednávky na odeslání plodin. Existuje konstantní proměnná nazvaná order, která obsahuje řetězec s objednávkami plodin, jež mají být odeslány. Musíme zjistit, jaké objednávky to jsou a kolik jich máme; můžeme to udělat pomocí funkce speak() a rozbalením řetězce i funkcí len().
player.speak( [*order] ) player.speak("There are d% orders of crops going out" % ( len(order) ) )
Tím, že umístíte řetězcovou proměnnou do hranatých závorek a přidáte *, aktivujete operátor pro rozbalení řetězce. Například: [*string]. To způsobí, že řetězec se rozdělí na jednotlivé znaky a vloží se do seznamu, například: [*string] vrátí seznam ['s', 't', 'r', 'i', 'n', 'g']. Použitím len() na řetězci zjistíte, kolik znaků řetězec obsahuje.
Pro zakončení cvičení jděte ke zlaté X značce na pravé straně stodoly a určete, kolik liber krmiva je třeba doručit prasátkům. Vytvořte proměnnou jménem food, a jako hodnotu použijte proměnnou number, kterou jste vytvořili dříve, vynásobenou číslem 35, například takto: food = number * 35.
Zatímco stojíte před stodolou, použijte funkci speak() spolu s proměnnou food k oznámení množství dodávaného krmiva, například takto: player.speak("There are d% pounds of food coming in" % (food) ).