Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň
Pokročilé funkce
Funkce s proměnným počtem argumentů
Cíl
Seberte všechny spotřební materiály ve skladu a zabalte je do skladovacích kontejnerů pomocí funkcí s variabilními argumenty.
Ve skladu se nachází několik potravinových položek, které je třeba zabalit, aby mohly být odeslány k prodeji. Aby bylo možné to provést efektivně, můžete vytvářet vlastní funkce s proměnným počtem argumentů. Jedná se o funkce, které nemají pevně stanovený počet argumentů a umožňují vám zadat tolik argumentů, kolik potřebujete pro vykonání jejich akcí.
Existují dva (2) způsoby, jak přidat proměnný počet argumentů do funkce, v závislosti na tom, čeho chcete dosáhnout. První metoda spočívá ve vytvoření seznamu argumentů – místo zadávání různých názvů argumentů umístíte před jeden argument hvězdičku. Tím se automaticky vytvoří seznam.
def custom_function(message,*arguments):
player.speak(message)
return(arguments)
value = custom_function("lalala","one","two","three")
# The message "lalala" is printed on screen
# Value now returns the list ("one","two","three")
Druhá metoda spočívá v umístění argumentů do slovníku místo do seznamu. Postup je stejný jako u předchozí metody, ale místo jedné hvězdičky použijete dvě. Tím se automaticky vytvoří slovník místo seznamu.
def custom_function(message,**arguments):
player.speak(message)
return(arguments)
value = custom_function("lalala", one = 1, two = 2, three = 3)
# The message "lalala" is printed on screen
# Value now returns the dictionary:
# {'one': 1, 'three': 3, 'two': 2}
Pro zabalení všech položek pro přepravu vytvořte dvě sady vlastních funkcí – jednu pro balení jednotlivých položek a druhou pro balení více položek dohromady. Použijte variabilní argumenty k zabalení různých položek společně, aniž byste museli vytvářet příliš mnoho funkcí.
def pack_singles(name,*items):
length = len(items)
player.speak("There are %d types of %s, those being:"
% (length, name) )
player.speak(items)
player.place(items)
def pack_multi(name,**items):
length = len(items)
player.speak("There are %d types of %s, those being:"
% (length, name) )
player.speak(items)
player.place(items)
Na poli se nacházejí čtyři (4) různé typy položek: "jars", "eggs", "berries" a "fruit". Seberte všechny položky ve skladu a vydejte se směrem k X značkám na dopravní cestě. Jděte ke tmavým X značkám a použijte funkci pack_singles k zabalení položek "jars" a "eggs".
U položky "jars" existují čtyři (4) typy, které sbíráte a zadáváte jako argumenty, a to "white", "purple", "red" a "brown". Tyto mají být uloženy v kontejneru u zeleného koberce. Kód se píše takto: pack_singles("jars", "white", "purple", "red", "brown")
U položky "eggs" existují tři (3) typy, které sbíráte a zadáváte jako argumenty, a to "white", "green" a "blue". Tyto mají být uloženy v kontejneru u oranžového koberce. Používá se stejný formát jako u předchozí položky.
Poté se vydejte ke světlým X značkám a použijte funkci pack_multi k zabalení položek "berries" a "fruit". U položky "berries" existují tři (3) typy, které sbíráte a zadáváte jako argumenty, a to "red", "blue" a "purple". Tyto mají být uloženy v kontejneru u modrého koberce. U každé z nich je třeba přidat množství, které jste nasbírali, například: pack_multi("berries", red = 3 , blue = 2 , purple = 4 )
U položky "fruit" existují čtyři (4) typy, které sbíráte a zadáváte jako argumenty, a to "apple", "pear", "orange" a "peach". Tyto mají být uloženy v kontejneru u červeného koberce. Použijte stejný formát jako u předchozí položky a ujistěte se, že jsou všechny položky sesbírány a uloženy, aby úroveň mohla být dokončena.