LEVEL 5 ・ 関数 / Lesson 10
関数に判断を任せる
材料を2つ渡す。判断(if)を関数にして、繰り返し(for)の中で使い回します。
このレッスンが終わったら
「関数を使うと、判断のルールを1か所にまとめられる。ルールが変わっても、直すのは1か所だけ」と言える。
できることを見る
前のレッスンでは、関数に材料を1つ渡しました。今回は材料を2つ渡し、「達成か、未達か」の判断を関数に任せてみます。
def judge(sales, target):
if sales >= target:
return "達成"
else:
return "未達"「売上」と「目標」を渡すと、判断の結果が返ってくる関数です。
動かしてみる
3人の売上を、判断してもらいます。
▶ 実行を押すと、ここに結果が出ます
1250000 → 達成、800000 → 未達、1000000 → 達成と出ましたか。判断を関数にしておいたので、同じ1行を繰り返すだけで、全員分を判断できました。
1行ずつ読む
def judge(sales, target):「judge」という処理を作る。材料として、売上と目標の2つを受け取る if sales >= target:もし、売上が目標以上なら、 return "達成"答えとして「達成」を返す else:そうでなければ、 return "未達"答えとして「未達」を返すfor s in [1250000, 800000, 1000000]:3人の売上を1つずつ取り出して、「s」と呼ぶ print(s, judge(s, 1000000))売上と、判断の結果を並べて表示する日本語にすると
材料は、,(カンマ)で区切って並べます。渡す順番と、受け取る順番は同じになります。(1つ目の s が sales に、2つ目の 1000000 が target に入ります)
- 材料①売上 1250000
- 材料②目標 1000000
- judgeif で判断する
- 結果達成
1か所だけ変える
① 目標を変える。 呼び出す側の 1000000 を 900000 にすると、判断が変わります。
▶ 実行を押すと、ここに結果が出ます
② 判断のルールを変える。 関数の中の >= を > に変えると、ちょうど目標額のときの結果が変わります。判断のルールは関数の中の1か所だけなので、直すのも1か所だけです。
▶ 実行を押すと、ここに結果が出ます
③ 材料の順番を間違える。 judge(1000000, s) と、順番を逆にするとどうなるでしょう。
▶ 実行を押すと、ここに結果が出ます
エラーは出ませんが、意味が逆になります。順番を間違えても、Pythonは気づいてくれません。材料の順番は、関数を作るときに決めた順番に合わせます。
自分で書く
お題① 点数 score を受け取り、70点以上なら "合格"、そうでなければ "不合格" を返す関数 is_pass を作ってください。そして、80 65 70 の3人を判定して表示します。
▶ 実行を押すと、ここに結果が出ます
ヒントを見る
judge の形とそっくりです。if score >= 70: のとき「合格」を、else: のとき「不合格」を、それぞれ return します。
答えの例を見る
def is_pass(score):
if score >= 70:
return "合格"
else:
return "不合格"
for score in [80, 65, 70]:
print(is_pass(score))お題② 数字のリストを受け取り、平均を返す関数 average を作ってください。平均は、合計(sum)を件数(len)で割ります。
▶ 実行を押すと、ここに結果が出ます
ヒントを見る
return sum(numbers) / len(numbers) と書きます。
答えの例を見る
def average(numbers): return sum(numbers) / len(numbers) print(average([100, 200, 300]))