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

高度な関数
多相関数

この章では、新しい種類の関数、それらの多様な使い方、そしてPythonでコーディングする際にそれらを最大限に活用する方法について探求します。

このレベルでは、ポリモーフィック関数から始めます。これらは、さまざまなデータ型で使用できる関数です。つまり、同じ関数を異なる目的で使用する、ユニバーサルな関数と言えます。

Guide

目的

多態関数を利用して、作物と子豚の状況をチェックし、供給出荷を確認しなさい。

まもなく、販売するために出荷される収穫可能な作物が現れるはずです。また、子豚には餌が届けられる必要があるため、注文すべき餌の量を確認するのが良いでしょう。これらのタスクを達成するには多態関数を使用できます。この場合、len() 関数を使用します。

多態関数とは、複数の異なるデータ型で使用できる関数のことです。たとえば、len() 関数はオブジェクトの長さを計算するために使用される関数で、これらのオブジェクトはリスト、辞書、さらには文字列など、さまざまなデータ型である可能性があります。まず、畑の下の X 印からカウントを始め、その後、小屋の上の X 印に移動します。

道路沿いの囲いの中に何匹かの子豚がいます。彼らの名前は "Peggle"、"Peter"、"Piper"、"Pedro" です。これらの名前をリストに入れてカウントできるようにしましょう。例えば、piglets = ["Peggle", "Peter", "Piper", "Pedro"] のようにします。そして、len() 関数を使ってリストの長さを格納するための変数 number を作成します。次のように: number = len(piglets)

リストと変数を設定したら、子豚の囲いの前にある暗い X 印まで歩き、囲いに向かって speak() 関数を使用して子豚を数えます。結果を得るには、number 変数を使います。次のように: player.speak("There are d% Piglets" % (number) )

子豚のチェックが終わったら、畑のそばにある明るい X 印まで歩き、作物に向かって数を数えます。作物は 3 種類あり、"Tomatoes"、"Pumpkins"、"Eggplant" です。それぞれの作物がいくつ育っているかを数え、以下のように辞書に保存します:

crops = {} crops["Tomato"] = number of tomato crops crops["Pumpkin"] = number of Pumpkin crops crops["Eggplant"] = number of Eggplant crops

辞書に適切な値を入力したら、len() 関数と組み合わせて speak() 関数を使用し、利用可能な作物の種類数を数えます。次のように: player.speak("There are d% types of crops" % ( len(crops) ) )

子豚と作物の両方を数え終えたら、紫色のマット上の暗い X 印まで歩いて、出荷される作物の注文を確認します。出荷すべき作物の注文が含まれた文字列を保持している定数変数 order があります。注文内容と注文数を確認するために、speak() 関数を使用し、文字列のアンパッキングと len() 関数を使います。

player.speak( [*order] ) player.speak("There are d% orders of crops going out" % ( len(order) ) )

文字列変数を角括弧内に入れて先頭に * を付けることで、文字列を展開する演算子を有効にできます。たとえば、[*string] は、文字列を個々の文字に分解してリストに格納します。例として、[*string] はリスト ['s', 't', 'r', 'i', 'n', 'g'] を出力します。また、len() 関数を文字列に使用すると、その文字列の文字数を数えます。

エクササイズの締めくくりとして、納屋の右側にある金色の X 印まで歩き、子豚に届ける餌のポンド数を確認します。food という変数を作成し、先に作成した number 変数に 35 を掛けてポンド数を求めます。次のように: food = number * 35

納屋に向かって立ちながら、speak() 関数と food 変数を組み合わせて、届けられる餌の量を示します。次のように: player.speak("There are d% pounds of food coming in" % (food) )

コードブック