この記事は、岩手県八幡平市のプログラミング教室「アクセルキャンプ」の公開教材です。
アクセルキャンプ(フリースペースプラウド)のリンク
教材の作成依頼等も承っております。ご意見等は、リンク先の問い合わせ欄からお願いします。
教材の転用・利用等は自由です。
算数の宿題を一瞬で終わらそう
pythonのプログラムを使って、夏休みの算数の宿題を瞬殺して、夏休みをエンジョイしよう!夏休みの計算ドリルとかって、似たような問題が多かったりするよね?
関数の仕組みを理解すれば、そういうこともできちゃいます.
①関数の仕組み
・関数を用意するとき
def 関数名(引数):
関数の処理1
関数の処理2
・・・
・関数を使用するとき
関数名()
①def を書くことで「ここから関数がはじまるよ」と宣言します。
②関数名は、なんの処理をする関数なのかわかりやすい名前をつけましょう
例)足し算をする関数
◯:tashizan() または英語でadd()
☓:Ricky_senseino_ikemen_tashizan()
③引数の名前も、関数内で処理を行うときにわかりやすい名前にしましょう。
では、一番かんたんな足し算関数で肩慣らししていきましょう!
・足し算関数
引数を2つ使って、その2つの足し算の結果を返します。ここで、引数について復習しましょう。
引数(ひきすう)とは:関数が計算をするために必要なデータ
足し算の場合は足す数・足される数など。
足し算関数の構造はこんなかんじになります
#関数を用意
def 関数名(引数1:足す数, 引数2:足される数):
処理①:引数1と引数2を足す
処理②:足した結果を表示(print)
#作った関数を使う
関数名(足す数のデータ. たされる数のデータ)
では、関数名、引数名をつけて、実行してみましょう
#関数を用意
def tashizan(tasukazu, tasarerukazu):
#処理1:引数1と引数2を足す
kotae = tasukazu + tasarerukazu
#処理2:足した結果を表示(print)
print(kotae)
#作った関数を使う
関数名(3, 5)
#実行結果
#8
関数は複数の処理をまとめるためのものであることは、前回やりましたね!処理1と処理2を、問題を解くたびに毎回実行するのは面倒なので、tashizan()だけで実行できるように関数を作っています。
②関数を作ってみよう
では、いろんな関数を作ってみましょう
・台形の面積を求める関数
※台形の面積の公式:(上底+下底)x高さ÷2
#関数を用意:引数はjyoutei, katei, takasa
def daikei(jyoutei, katei, takasa):
#台形の面積を計算
menseki = (jyoutei + katei) * takasa / 2
#結果を出力
print(menseki)
#関数を実行
daikei(5, 3, 2)
#実行結果:8
ここでひとつ、わざとエラーを出してみましょう。引数の一つ「takasa」のデータを渡さずに実行してみます。実行部分のdaikei(5,3,2)の2を入力せず、daikei(5, 3)で実行してみましょう。すると
TypeError: daikei() missing 1 required positional argument: 'takasa'
というエラーが出ます。「引数3つ用意されてるけど、もらってるデータが1つたりないよ!」といってます。引数の数とわたすデータの数が合わないとエラーになるので、実行するときにちゃんとデータを渡しているか確認しましょう。(引数の数を自由に変えられる仕組みもありますが、それはまたのちほど!)
③関数を手直ししてみよう
次のコードを見て、もっと良いコードにできないか考えてみましょう。
#円の面積を求める関数 円の面積=半径x半径x3.14(円周率)
def enno_menseki(hankei, ensyuuritsu):
menseki = hankei * hankei * ensyuuritsu
print(menseki)
#実行
ennno_menseki(5, 3.14)
#結果:78.5
動くには動きますが、1つ直したほうがいいところがあります!円周率って、3.14のまま変わらないよね!ということで、この関数はわざわざ3.14をensyuuritsuという引数に変えて、関数の中で使っています。必要のない引数を作ると混乱やバグのもとになるので、わかりやすいシンプルなコードに変えてあげましょう。
#円の面積を求める関数 円の面積=半径x半径x3.14(円周率)
def enno_menseki(hankei):
menseki = hankei * hankei * 3.14
print(menseki)
#実行
ennno_menseki(5)
#結果:78.5
宿題!!
①立方体の面積を求めるプログラムを作ってください
関数名;rippoutai
引数名:tate, yoko, takasa
②次の問題を解くための関数を作ってください
リッキー先生はは時速18キロのはやさで6キロ走りました。何分で走りきったでしょう?
時間を分に変えるところが、この問題のキモです。やってみてください!
関数名、引数名は自分で考えてみましょう!わかりやすいのにしようね!
プログラムはそれぞれ paizaのサイト で実行しましょう。
ではまた来週!