Pythonの基礎2
Pythonのif文、for文、while文
今日も引き続きpythonの基礎を学習していきたいと思います。
前回の前提も使いますので、こちらも参照してください。
machinetraveler.hatenablog.com
今日も手を動かして勉強してください。以下の本を参考にしています。より詳しく学びたい方は参考にしてください。
- 作者: Mark Lutz,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/02/26
- メディア: 大型本
- 購入: 12人 クリック: 423回
- この商品を含むブログ (133件) を見る
- 作者: Bill Lubanovic,斎藤康毅,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/12/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
もしも上の参考書が難しいと感じるようであれば、以下の参考書がおすすめです。まだ一度もプログラミングをやったことのない方や以下の説明が難しいと感じる方にはおすすめです。
では早速、本題の条件分岐に入っていきましょう。
if文
ifの横にある条件式を満たしている場合(true)に、該当の文(はじめにある:からelse:の手前まで)を実行し、そうでない場合はelse:以下を実行します。以下の処理は、数字の5がリストの中に入っているかどうかを判定しています。入ってなければ、elseに飛びます。また、Pythonのコーディングにおける注意点ですが、if文などを使うとき、次の行は半角スペース4つ分をおいてコードを始める必要があります。このJupyter上では、改行をしたときに自動で空白ができますが、開発環境によっては注意しましょう。
<補足説明>「print(" %d は入っています。" %(sample_int))」では、変数(sample_int)を文字列の中に表示させるために、%dと%(sample_int)を使っています。%d は整数、%s は文字列、%f は浮動小数点数の場合に設定します。文字列フォーマットといい、「print("{0} は入っていません。".format(sample_int))」のようにして表示することも可能です(変数を複数設定することもできます)。
for文
次は、繰り返し文のforです。先ほど作成した辞書型のデータを1つ1つ取り出して、それぞれのキーと値を出力しています。
なお、以下のような方法でキーと値を取り出すこともできます。これは、あとで説明するオブジェクト指向型プログラミングの特徴で、データ(ここではsample_dic_data)とそれを処理するためのメソッド(以下のitems())がセットになっており、それを活用しています。メソッドとはあとで説明する関数みたいなもので、それを使って処理(ここでは、キーと値を返す)をします。
次もfor文を使っています。前回紹介したリストの要素をそれぞれ2倍する処理です。内包表記と言います。
さらにこれに条件を設定して作成することもできます。例えば偶数の数だけsample_data_listから取り出したい場合は、以下のようにします。「if i %2 ==0」を後につけており、i%2は、iを2で割ったあまりを意味しています。
なお、連続した整数を作る時にはrange()との併用が便利です。
while文
次の処理は、条件を満たしている限り、計算を続けるwhile文です。数字が90より大きくなった時点で、処理は終わります。
おそらくここの説明だけでは不十分だと思うので、以下の本を参照してください。
Pythonの関数とクラス
関数
defを使って、関数を作成しています。関数を作成すると、同じような処理を実行したいときに、便利です。1つ目のcalc_multi関数は、2つの数字を引数として、その掛け算を返しています。この引数がinput dataとなって、returnで結果を返し(返り値といいます)、これがoutput dataになります。
その次の関数calc_fibは、再帰と言って、自分の関数を中で呼び出しており、フィボナッチ数(1,1,2,3,5...と前と前々の数字を足して、その数を並べたもの)を作成しています。
なお、コードが長くなって行数をつけたい場合には、該当をセルを選択し、escキーを押した後に「l(エル)」キーを押すと、行数が表示されます。
クラス
最後にクラスです。先ほど少し出てきましたが、Pythonはオブジェクト指向型のプログラミング言語で、クラスはオブジェクトのひな型みたいなものです。初めて聞いた方は、すぐに理解するのは難しいと思いますので、実際に以下の実装例を見て、雰囲気だけつかんでください。直近はすぐに必要はありませんが、今後、機械学習のライブラリーsklearnなどを使う時に必要な概念(インスタンスなど)です。よく例えられる例が「たい焼き」で、以下のclassのPrintClassはたい焼き機の型で、実際のたい焼きが出来上がったのがインスタンスp1というイメージです。インスタンスとは、クラスからできあがる実体です。
このオブジェクト指向とクラスの概念は少し難しいので、もう少し具体的な例を見てみましょう。以下はMyCalcClassを作成しており、3つのメソッドを持っています。
次に、このクラス(MyCalcClass)からインスタンスを生成します。なお、instance_1とinstance_2は別物として扱われます。