LEVEL 5 ・ 関数 / Lesson 10

関数に判断を任せる

材料を2つ渡す。判断(if)を関数にして、繰り返し(for)の中で使い回します。

目安 15分 ・ インストール不要

このレッスンが終わったら

「関数を使うと、判断のルールを1か所にまとめられる。ルールが変わっても、直すのは1か所だけ」と言える。

STEP 1

できることを見る

前のレッスンでは、関数に材料を1つ渡しました。今回は材料を2つ渡し、「達成か、未達か」の判断を関数に任せてみます。

def judge(sales, target):
    if sales >= target:
        return "達成"
    else:
        return "未達"

「売上」と「目標」を渡すと、判断の結果が返ってくる関数です。

STEP 2

動かしてみる

3人の売上を、判断してもらいます。

売上を1人ずつ判断するコードは書き換えられます
Ctrl / ⌘ + Enter でも実行
結果
▶ 実行を押すと、ここに結果が出ます

1250000 → 達成、800000 → 未達、1000000 → 達成と出ましたか。判断を関数にしておいたので、同じ1行を繰り返すだけで、全員分を判断できました。

STEP 3

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))売上と、判断の結果を並べて表示する

日本語にすると

売上と目標を渡すと、「達成」か「未達」を返してくれる処理を作る。それを3人分、順番に使う。

材料は、,(カンマ)で区切って並べます。渡す順番と、受け取る順番は同じになります。(1つ目の s が sales に、2つ目の 1000000 が target に入ります)

  1. 材料①売上 1250000
  2. 材料②目標 1000000
  3. judgeif で判断する
  4. 結果達成
関数の中に、if(判断)を入れることもできます。for(繰り返し)の中で関数を使うこともできます。
STEP 4

1か所だけ変える

① 目標を変える。 呼び出す側の 1000000 を 900000 にすると、判断が変わります。

目標を変えてみようコードは書き換えられます
Ctrl / ⌘ + Enter でも実行
結果
▶ 実行を押すと、ここに結果が出ます

② 判断のルールを変える。 関数の中の >= を > に変えると、ちょうど目標額のときの結果が変わります。判断のルールは関数の中の1か所だけなので、直すのも1か所だけです。

ルールを1か所だけ変えてみようコードは書き換えられます
Ctrl / ⌘ + Enter でも実行
結果
▶ 実行を押すと、ここに結果が出ます

③ 材料の順番を間違える。 judge(1000000, s) と、順番を逆にするとどうなるでしょう。

材料の順番を入れ替えてみようコードは書き換えられます
Ctrl / ⌘ + Enter でも実行
結果
▶ 実行を押すと、ここに結果が出ます

エラーは出ませんが、意味が逆になります。順番を間違えても、Pythonは気づいてくれません。材料の順番は、関数を作るときに決めた順番に合わせます。

STEP 5

自分で書く

お題① 点数 score を受け取り、70点以上なら "合格"、そうでなければ "不合格" を返す関数 is_pass を作ってください。そして、80 65 70 の3人を判定して表示します。

お題①:合否を判定する関数コードは書き換えられます
Ctrl / ⌘ + Enter でも実行
結果
▶ 実行を押すと、ここに結果が出ます
ヒントを見る

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)で割ります。

お題②:平均を返す関数コードは書き換えられます
Ctrl / ⌘ + Enter でも実行
結果
▶ 実行を押すと、ここに結果が出ます
ヒントを見る

return sum(numbers) / len(numbers) と書きます。

答えの例を見る
def average(numbers):
  return sum(numbers) / len(numbers)

print(average([100, 200, 300]))
STEP 6

仕事ならどう使う?