関数の処理がいまいち理解できずで、解決するため下記の動画を見ながら学びました。
Python入門 第10回|引数と戻り値を根本から理解して関数を使いこなそう!【高校情報1】
https://youtu.be/wlOkT_6Qce4?si=PIt_5FJbIoUGPQVL
目次に沿って、メモを残します。
00:00 今回のテーマ
00:47 2種類の関数
提供されている関数
→組み込み関数
・組み込み関数一覧
https://docs.python.org/ja/3/library/functions.html
自分で作る関数
→ユーザー定義関数
01:54 関数の作り方
def 関数名(引数、・・・):
【処理】
defとは、definititon:定義
関数の動きを理解するには、2つの値の動きを理解する必要がある
関数とはあるところから呼び出して使うことになりますが、
関数の呼び出し元から受け取ることができます。受け取る値のことを引数と呼びます
引数:呼び出し元から受け取る値
戻り値:関数の処理のあとに呼び出し元に返す値. return文 で指定
(returnを指定しない場合は None が返る)
03:58 引数と戻り値の動き
プログラムを実行したときに、数学の点数と英語の点数を入力すると、画面に表示したり、2つの平均点を表示したりそのようなプログラムがあったとします。
関数を使うときには「呼び出す側」と「呼び出される側」がある
引数と戻り値があるないパターンの一例
引数× 戻り値×
def usage ():
print("0=100の数値を")
print("入力して下さい")
# 呼び出し方
usage()# これが呼んで、上記の関数に行って、処理を終えて、またここに処理内容が戻ってくるイメージ(戻り値ないけど
動きのイメージは、呼び出し元usage()→呼び出し先 関数def usage ():→usage()
引数◯ 戻り値×
def display (e, m):
print("英語は", e, "点")
print("数学は", m, "点")
# 呼び出し方
display(90,80)
動きのイメージは、呼び出し元display(90,80)→呼び出し先 関数def display (90,80):→display(90,80)これでprint文の内容が表示される
引数◯ 戻り値◯
def get_avg (e, m):
a = ( e + m ) / 2
return a
# 呼び出し方
avg = get_avg(90,80)
動きのイメージは、呼び出し元avg = get_avg(90,80)→呼び出し先 関数def get_avg (90,80):
→呼び出し元に計算結果を返す 85.0
イメージは、get_avg(90,80) これが、85.0 になるイメージ。avg = 85.0
引数と戻り値を理解することが関数の動きを読み取るコツ
10:02 サンプルプログラム
【英語と数学の平均点を計算】0~100の数値を入力して下さい
英語の点数を入力 ->【ここに入力すると掲載される仕組み】
英語をの点数を入れると、自動で、「数学の点数を入力 ->」の入力項目が表示される入力すると、その下に
英語は90点
数学は80点
平均は85.0です
と表示される簡単なプログラム
def usage ():
print("【英語と数学の平均点を計算】")
print("0~100の数値を入力して下さい")
def display (e, m):
print("英語は", e, "点")
print("数学は", m, "点")
def get_avg (e, m):
a = ( e + m ) / 2
return a
usage()
eng = int(input("英語の点数を入力 ->"))
math = int(input("数学の点数を入力 ->"))
display(eng, math)
avg = get_avg(eng, math)
print("平均は", avg, "点")
最初の3つの関数は、メインの方で呼び出されると処理が走る箇所
メインの箇所はusage()から下。
usage()が呼ばれるとdef usage ():が走る。
引数がないので、呼び出し先も呼び出し元もない状態
次に
eng = int(input("英語の点数を入力 ->"))
math = int(input("数学の点数を入力 ->"))
# input(""英語の点数を入力 ->"")の部分から処理され、コンソール上から数値を入力されるとここに入る。例えば90と入力すると
eng = int(input("90"))
# そして、90はint関数に渡されて、このようになります
# 結果、整数の90に置き換わる
eng = 90
次にDisplay関数に渡される
display(eng, math)
# ↓
display(90, 80)
# 上記が下記に渡されて
def display (e, m):
print("英語は", e, "点")
print("数学は", m, "点")
# 数字は下記のところ入る
def display (90, 80):
print("英語は", 90, "点")
print("数学は", 80, "点")
次に平均を計算するところ
上記の様にengとmathには90, 80が入る
avg = get_avg(eng, math)
print("平均は", avg, "点")
# 上記が動くと下記の関数が走り出す
def get_avg (e, m):
a = ( e + m ) / 2
return a
# 上記が動くと下記に戻って置き換わる
avg = 85.0
13:56 まとめ
この様に、プログラムは行ったり来たりして動いています。
処理が追えるようになればもっとプログラムが楽しくなる!