Coding for KidsCoding for Kids
クリエイティブレベル挑戦教師ガイド
機能に投票
上級Python開発コース
チャプター
>
レベル

高度な関数
可変長引数関数

目的

倉庫内のすべての消耗品を手に取り、可変引数関数を使って保管容器に詰めましょう。

倉庫内には、出荷して販売するために詰める必要があるいくつかの食品が存在します。これを効率的に行うために、可変数の引数を持つカスタム関数を作成することができます。これらの関数は、引数の数が固定されておらず、関数の動作を実行するために必要なだけの引数を設定することができます。

関数に可変数の引数を追加する方法は、達成したいことによって2通りあります。最初の方法は、複数の引数名を並べる代わりに、単一の引数の前にアスタリスクを付けて引数リストを作成することです。これにより、自動的にリストが作成されます。

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")

2番目の方法は、リストの代わりに引数を辞書に格納する方法です。これは前の方法と同様に行いますが、アスタリスクを1つではなく2つ付けます。これにより、自動的にリストの代わりに辞書が作成されます。

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}

出荷のためにすべての品物を詰めるには、個々の品物を詰めるものと、複数の品物をまとめて詰めるものの2種類のカスタム関数を作成してください。可変引数を使用することで、あまり多くの関数を作ることなく、様々な品物をまとめて詰めることができます。

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)

フィールド上には4種類の品目が存在します: "jars"、"eggs"、"berries"、および "fruit" 。倉庫内のすべての品物を集め、出荷通路上のXマークの方へ歩いて進んでください。暗いXマークの方へ向かい、pack_singles 関数を使用して "jars" と "eggs" を詰めます。

"jars" については、4種類の品目("white"、"purple"、"red"、および "brown")を集め、これらを引数として入力します。これらは green carpet のそばの容器に保管されます。コードは次のように書かれます: pack_singles("jars", "white", "purple", "red", "brown")

"eggs" については、3種類の品目("white"、"green"、および "blue")を集め、これらを引数として入力します。これらは orange carpet のそばの容器に保管されます。前述の形式と同じ方法を使います。

その後、明るいXマークの方へ向かい、pack_multi 関数を使用して "berries" と "fruit" を詰めます。"berries" については、3種類の品目("red"、"blue"、および "purple")を集め、これらを引数として入力します。これらは blue carpet のそばの容器に保管されます。それぞれの品目の数量も合わせて指定する必要があります。例えば、pack_multi("berries", red = 3 , blue = 2 , purple = 4 ) のようにします。

"fruit" については、4種類の品目("apple"、"pear"、"orange"、および "peach")を集め、これらを引数として入力します。これらは red carpet のそばの容器に保管されます。前述のエントリと同じ形式を使い、レベルを完了するためにすべての品物が集められ、保管されるようにしてください。

コードブック