こんにちは、ECF Tech
ブログ担当 Michiharu.Tです。
Pythonでプログラミングを楽しく始めるためのプチ講座を連載しています。今回はその第4回となります。
第1回からの内容は下をご参考ください。
本シリーズでは、動作環境としてGoogle Colaboratoryを推奨しています。
Google Colaboratoryは、Googleアカウントがあれば簡単に始められます。使い方は下記よりご確認ください。基本的な使い方がわかれば、すぐにでもPythonプログラミングを始めることができます。
対象読者
- プログラミングを始めてみたいと思っている方
- パソコンでインターネットやWord・Excelの基本操作ができる方
- 数学の授業にプログラミングを取り入れたいと考えている先生方
本記事の用語の説明
本記事では、Google Colaboratory内の下の部分を次のように呼んでいます。
上のプログラムエリアの部分は、次のように(コード)と(実行結果)を1セットにして示しています。
(コード)
print('Hello')
(実行結果)
Hello
今回の学習テーマ
今回のテーマは「関数を使ってみよう!」です。関数というと難しいですが、簡単に言うと「便利な機能」の事です。プロの方がすでに作ったプログラムを簡単に利用できるたのしいしくみです。
目標プログラム
キーボードから入力されたいくつかの数から一番大きな数を表示します。キーボードから「end」が入力されるまでは、キーボードからの入力を受けつけます。
数字を入力:15 数字を入力:8 数字を入力:9 数字を入力:11 数字を入力:end 1番大きな数は15です
やってみよう
では、さっそくプログラミングをしていきましょう。
input関数
まずはキーボードから文字や数字を受け取れるしくみを確認します。Pythonではinput
という関数を使って、キーボードからの入力を受け取ることができます。次のコードを作成・実行しましょう。
(コード)
name=input('名前を入れてください:') print('こんにちは、'+ name+'さん')
(実行結果)
名前を入れてください:タロウ こんにちは、タロウさん
名前を入れてください:の後にテキストボックスが表示されるので、名前を入れましょう。
入力後Enterキーを押すと、実行結果が出ます。
キーボードから入力された値がnameに入ったことが分かります。
input関数についてまとめます。
- input関数は
input('メッセージ')
の形式で利用する。 - メッセージ部分を画面に表示して、キーボードから値が入力されるのを待つ。
- 入力されたら、その値を答えとして返してくれる
input関数が答えを返してくれたら、それを受け取る変数が必要になります。nameがその役割を果たしています。
条件でくりかえす
目標とするプログラムの条件は「end」が入力されるまでとなっています。この「~まで」という条件をつかってくり返しを行なう構文がwhile文です。次のコードを実行してみましょう。
(コード)
count=0 while count<5: print('こんにちは') count=count+1
(実行結果)
こんにちは こんにちは こんにちは こんにちは こんにちは
while文の記述方法は次のようになります。Pythonでは字下げを使って制御構文がおよぶ範囲(ブロック)を表しますので、下図の黄色部分が繰り返し部分です。
つまり、変数countの値が5より小さい間くり返しを行ないます。
1つ注意すべきはcount=count+1
の存在です。くり返しを行なうたびにcountを1ずつ増やします。この処理がないといつまでたってもcount<5
になるので、無限にくり返し文が続くことになります。この状態は無限ループと呼ばれます。
型を理解する
「型」という見慣れない言葉にとまどうかもしれません。まずは例を見てみましょう。
キーボードから入力した数値に5を足して表示するプログラムを作るとします。実行すると次のようなエラーが出ます。
(コード)
data=input('数字を入力:') print(data+5);
(実行結果)
数字を入力:10 --------------------------------------------------------------------------- TypeError Traceback (most recent call last) in () 1 data = input('数字を入力:') ----> 2 print(data+5); TypeError: must be str, not int
数字を入力してEnterキーを押すとエラー(プログラムの誤り)が表示されました。これは型の違いによるものです。
2行目でdata+5
という記述があります。実はこの部分、data
は文字。5
は数値とみなされています。このように多くのプログラム言語では同じ値でも、この値は文字、この値は数値と種別を分けて考えています。これが「型」です。
ここ以降
- 「文字とみなされる値」=文字型の値
- 「数値とみなされる値」=数値型の値
という表現を用います。
キーボードでは確かに「10」と入れたのですが、input関数によって得られた値は必ず文字型とみなされることになっています。一方が文字で一方が数値型だと残念ながら計算がうまくいきません。
そこで、文字型の値を数値型の値に変換する関数を使います。次の例を見てください。
(コード)
data=input('数字を入力:') print(int(data)+5);
(実行結果)
数字を入力:10 15
こんどは正しく実行されていることが分かります。プログラムの2行目を見るとdata
の部分がint(data)
に変わっています。int関数です。int関数はint(値)
と記述することで()
の中の値を数値型に変えてくれる働きがあります。
したがって、キーボードから入力され、dataに入った10は数値とみなされるようになったのです。
また、これと同様に数値型から文字型にするstr関数もあります。使い方は同様です。str(値)
と記述することで()
の中の値を文字型に変えてくれる働きがあります。
リストへの値の追加
必要な知識の学習ももう一息です。次はリストに値を入れる方法です。目標とするプログラムではキーボードから入力された値をリストを用いて管理します。
ここでは例を見ながら、リストに値を追加していく方法を確認します。
(コード)
list = [] list.append(5) list.append(7) list.append(9) list
(実行結果)
5 7 9
appendという関数を使っています。append(値)
とすることで値をリストに入れることができます。
なお、この関数はリストが持っている関数なのでlist.
がappend
の前についています。リストが関数を持つ、という概念に違和感を持つ人もいるかもしれません。これは多くのプログラミング言語で用いられるオブジェクトという考え方に基づきます。触れてしまうと話題が大きくなりすぎるので、とりあえずそういうものとしておきます。
一番大きいものを選ぶ
最後にもうひとつmax関数をご紹介します。まずはコード例をご覧ください。
(コード)
list = [12,8,15,11,7] max(list)
(実行結果)
15
max()
の( )の中にリストを入れると、その中から1番大きな値を答えとして返してくれます。
print関数
これまでに何気に使っていたprintも関数です。print(値)
とすることで、値を画面に表示します。値の部分は式や別の関数実行など様々な表記ができます。
目標プログラムを完成させる
では、いよいよ目標プログラムを作成します。プログラムは次のようになります。
(コード)
data=input('数字を入力:') list=[] while data!='end': i=int(data) list.append(i) data=input('数字を入力:') ans=max(list) print('1番大きな数は'+str(ans)+'です')
(実行結果)
数字を入力:15 数字を入力:8 数字を入力:9 数字を入力:11 数字を入力:end 1番大きな数は15です。
上のプログラムを日本語に置きかえてみます。
- 「数字を入力:」と表示しキーボードの入力を受けつけ、dataに入れる
- listという名前のリストを作る
- dataが「end」でない間、下の3行をくり返す
- dataを数値型に変換し、iに入れる
- listにiの値を追加する
- 「数字を入力:」と表示しキーボードの入力を受けつけ、dataに入れる
- listの中で1番大きな値をmaxに入れる
- 「1番大きな数は??です」と表示する。??にはansの値が入る
これで目標のプログラムができました。
今回のプログラムで使った関数
今回利用した関数をまとめてみたいと思います。
- int関数:
int(値)
と記述し、( )内の値を整数型に変える - str関数:
str(値)
と記述し、( )内の値を文字型に変える - input関数:
input('メッセージ')
と記述する。メッセージを表示し、キーボードからの入力を受けつける - max関数:
max(リスト)
と記述し、リスト内の値の中から1番大きな値を返す - append関数:リストが持つ関数なので、
リスト.append(値)
と記述する。値をリストに追加する。 - print関数:
print(値)
とすることで、値を画面に表示します。
おわりに
本日はここまでといたします。最後までご覧いただきありがとうございました。関数が簡単に利用できる便利な道具である。ということをなんとなく感じられればいいと思います。
関数はここでご紹介した以上にかなり奥深いものですので、徐々にその本質を見て行けたらと思います。これからもよろしくお願いします。
合同会社イー・シー・エフでは、子ども向けプログラミングなどの教育講座を実施しています。プログラミング教室の案内や教育教材の情報、また関連するご相談・問い合わせにつきましては下記よりご確認ください。