1. プログラムの基本

演習を通してプログラムの基本について学びます.

なお,この演習では次のリンクにあるnotebookを利用できます.以下のリンクからipynbファイルをダウンロードし,自分のGoogle Drive上に保存してからColaboratory上で実行してください.

beginner01.ipynb

1.1 出力文と文字列

以下のようにプログラムを書くことで, 出力を行なうことができます.

1+2の計算を行わずにそのまま出力させたいときには以下のように文字列として扱うようにします.

#が書かれた行は,以降プログラムが実行されなくなります.言葉で説明を書きたいや,実行する必要がなくなったプログラムの前に#を書くといった使い方ができます.

1.2 型と演算

ここでは型の違いについて学んでいきます.

異なる型の間で演算を行った場合には,以下のようになります.

文字列型同士の計算では, +の意味が変わります.

文字列型のデータと,整数型ないし実数型のデータに,「+」演算子を適用しようとすると以下のようになります.

数値を文字列にすることで文字列と数値の結合を可能にします.

1.3 変数と制御構造

値を保持するための変数と,条件に応じて実行(の振舞い)を変える制御構造について学びます.

条件は以下のようにプログラムでは書きます.

制御構造の1つであるwhile文は次のようなものです.

1から10の和を求めるプログラムを変数とwhile文を使って作成したものが以下のプログラムです.このプログラムでは変数 sum を最初に0に初期化した上で,最初に10を加え,次に9を加えるというように,徐々に値を小さくしながら1まで加えることで,1から10までの総和を求めています.

階乗を求めるプログラムを変数とwhile文を使って作成したものが以下のプログラムです.このプログラムでは15までの階乗を求めています.

反復実行を行う制御構造にはwhile文の他にfor文があります.for文は配列を学んだ後に扱います.

制御構造の1つであるif文は次のようなものです.

絶対値を求めるプログラムをif文を使って作成したものが以下のプログラムです.今は変数 x を-5としているので-5の絶対値を求めています.

点数によって成績を評価するプログラムをif,elif,elseを用いて作成したものが以下のプログラムです.90~100点なら優上,80~点なら優,65~79点なら良,50~64点なら可,~49点なら不可,という風に成績をつけるとすると,次のようにして評価することができます.

1.4 配列

配列とは,複数のデータを格納/保持できる変数の一種で,添字と呼ばれる番号を用いてデータを区別します.

上記の説明をプログラムに示すと次のようになります.

配列中の全データの平均値を求めるプログラムは以下のようになります.平均値では小数点を扱いたいので変数 sum の初期値として0.0を代入しています.

配列を使って最小値と最大値を求めるプログラムは以下のプログラムです.最小値を求めるminの計算では,if文を用いて, それ以前よりも小さい値が出てきた際に,minの値を更新し最小になることを保証しています.なので最小値と最大値を求めるために初期値に代入する値を工夫しています.

while文と同様に反復実行を行える制御構造として,for文があります.

for文を使って配列の要素を順に出力するプログラムは次のように書けます.

for文はrangeを利用して次のように書くことがしばしばあります.

0から3までの数字を順に出力するプログラムは次のように書けます.

また,先ほどwhile文を用いて書いた1から10までの和を求めるプログラムをfor文を使って書くと次のようになります.

1.5 関数

関数とは,一連の処理をひとまとめにしたものです.引数に応じて処理を行い,値を返します.

関数は次のように定義します.

例えば,縦の長さがa, 横の長さがbの長方形の面積を求める関数areaは,次のように書けます.

関数を定義することで,同じ処理を繰り返し利用することができます.例えば,今定義したarea関数を用いれば,引数a, bを変化させることで,あらゆる長方形について簡単に面積を求めることができます.

また,引数のない関数や返り値のない関数を定義することもできます.例えば,Hello, Python!と出力する関数hello_pythonは次のように書けます.

なお,returnによって返り値が返されたらそれ以降のプログラムは実行されません.例えば,次で定義する,ある配列aにある数xが含まれればTrue,含まれていなければFalseを返す関数find_xは次のように書けます.

ここまでに出てきたprintやrangeも関数です.

1.6 練習問題

ここまでの項目でPythonによるプログミングの基本事項を押さえてきました.次の練習問題を解いて,定着しているか確認してみましょう.