Curso Avanzado de Desarrollo en Python
Capítulo
>
Nivel
Funciones avanzadas
Funciones con argumentos variables
Objetivo
Recoge todos los consumibles dentro del almacén y empácalos en contenedores de almacenamiento utilizando funciones con argumentos variables.
Hay varios alimentos ubicados dentro de un almacén que deben empacarse para ser enviados y vendidos. Para hacerlo de manera eficiente, puedes crear funciones personalizadas con un número variable de argumentos. Estas son funciones que no tienen un número fijo de argumentos y te permiten establecer tantos argumentos como necesites para ejecutar las acciones de la función.
Hay dos (2) formas de agregar un número variable de argumentos a una función, dependiendo de lo que quieras lograr. El primer método consiste en crear una lista de argumentos; en lugar de poner varios nombres de argumentos, coloca un asterisco delante de un solo argumento. Esto crea automáticamente una lista.
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")
El segundo método consiste en colocar los argumentos dentro de un diccionario en lugar de una lista; se hace de la misma manera que en el método anterior, pero en lugar de colocar un asterisco, colocas dos. Esto crea automáticamente un diccionario en lugar de una lista.
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}
Para empacar todos los artículos para el envío, crea dos conjuntos de funciones personalizadas, una para empacar artículos individuales y otra para empacar varios artículos juntos. Utiliza los argumentos variables para agrupar diversos artículos sin necesidad de crear demasiadas funciones.
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)
Hay cuatro (4) tipos diferentes de artículos en el campo: "jars", "eggs", "berries" y "fruit". Recoge todos los artículos en el almacén y camina hacia las marcas en X en el carril de envío. Dirígete hacia las marcas X oscuras y usa la función pack_singles para empacar los "jars" y "eggs".
Para los "jars" hay cuatro (4) tipos que recoges y se ingresan como argumentos, que son "white", "purple", "red" y "brown". Estos deben almacenarse en el contenedor junto a la alfombra verde. El código se escribe así: pack_singles("jars", "white", "purple", "red", "brown")
Para los "eggs" hay tres (3) tipos que recoges y se ingresan como argumentos, que son "white", "green" y "blue". Estos deben almacenarse en el contenedor junto a la alfombra naranja. Se utiliza el mismo formato que en el ejemplo anterior.
Luego, dirígete hacia las marcas X claras y usa la función pack_multi para empacar los "berries" y "fruit". Para los "berries" hay tres (3) tipos que recoges y se ingresan como argumentos, que son "red", "blue" y "purple". Estos deben almacenarse en el contenedor junto a la alfombra azul. Debes agregar las cantidades que recoges de cada uno, de la siguiente forma: pack_multi("berries", red = 3 , blue = 2 , purple = 4 )
Para los "fruit" hay cuatro (4) tipos que recoges y se ingresan como argumentos, que son "apple", "pear", "orange" y "peach". Estos deben almacenarse en el contenedor junto a la alfombra roja. Utiliza el mismo formato que en el ejemplo anterior; asegúrate de que se recojan y almacenen todos los artículos para completar el nivel.