LESSON 20 ・ 関数
関数を作る
関数を定義する
def square(x):
return x * x
a = square(3)
print(a)
defを使って、自分で関数を定義することができます。関数が行う処理は、インデントされたブロックに記述します。
受け取った数の2乗を返す関数squareは上記のように書くことができます。受け取る数をxで表し(xでなくても好きな名前を付けられます)、returnで結果を返します。ここではx * xで2乗した数を返しています。
関数を定義するときに、受け取る値に付ける名前をパラメータ(parameter)と言います。この関数ではxがパラメータです。関数を呼び出すときに渡す値を引数(ひきすう, argument)、関数が返す値を戻り値(もどりち, return value)と言います。また、関数に引数を渡して実行することを、関数を呼び出す(よびだす, call)と言います。
累乗を計算する
a = 2 * 2 * 2 * 2 * 2
print(a)
2の5乗を計算していますが、掛け算を何度も書くのは大変です。
関数の形を考える
a = power(2, 5)
print(a)
これを計算する関数powerを作ってみます。powerには二つのパラメータが必要です。関数には好きな個数のパラメータを定義できます。パラメータが0個の関数を作ることもできます。
power関数を実装する
def power(x, y):
result = 1
for i in range(y):
result *= x
return result
a = power(2, 5)
print(a)
関数powerはこのように書くことができます。
使わないループ変数
def power(x, y):
result = 1
for _ in range(y):
result *= x
return result
a = power(2, 5)
print(a)
組み込みの関数を使う
a = pow(2, 5)
print(a)
実は、Pythonには元々pow()という関数が用意されているので、自分で作る必要はありません。
a = pow(2, 2.5)
print(a)
このpowはさっき自分で書いたpowerよりも汎用的な実装がされており、2.5乗のような小数乗を計算することもできます。
PRACTICE
演習問題
コードを自分で書いて実行してから、答えと解説を確認しましょう。
問題1
整数を一つ受け取り、その数を2乗して返す関数squareを定義してください。square(4)の結果を表示してください。
答えと解説を見る
模範解答
def square(x):
return x * x
print(square(4))
パラメータxをx * xで2乗し、returnで結果を返します。square(4)の戻り値は16です。
問題2
長方形の幅と高さを整数で受け取り、面積を返す関数rectangleAreaを定義してください。幅8、高さ5の面積を表示してください。
答えと解説を見る
模範解答
def rectangleArea(width, height):
return width * height
print(rectangleArea(8, 5))
幅と高さをパラメータとして受け取り、その積を戻り値にします。同じ関数へ別の幅と高さを渡せば、ほかの長方形にも使えます。
問題3
整数xのy乗を返す関数powerを定義してください。power(3, 4)の結果を表示してください。
答えと解説を見る
模範解答
def power(x, y):
result = 1
for _ in range(y):
result *= x
return result
print(power(3, 4))
resultを1から始め、xをy回掛けます。3を4回掛けた結果の81が返されます。
問題4
言語に用意されている累乗の関数を使って、5の3乗を表示してください。
答えと解説を見る
模範解答
print(pow(5, 3))
powに底と指数を渡します。結果は125です。
問題5
1から受け取った整数nまでをすべて掛けた値を返す関数factorialを定義してください。factorial(5)の結果を表示してください。
答えと解説を見る
模範解答
def factorial(n):
result = 1
for number in range(1, n + 1):
result *= number
return result
print(factorial(5))
累乗する関数と同じように、ループでresultへ値を掛けていきます。1 * 2 * 3 * 4 * 5の結果である120が返されます。