機械学習と旅行と私

機械学習、旅行、語学と雑記(GCI講座参考)

Pythonの基礎2

Pythonのif文、for文、while文

今日も引き続きpythonの基礎を学習していきたいと思います。

 

前回の前提も使いますので、こちらも参照してください。

 

machinetraveler.hatenablog.com

 

 

今日も手を動かして勉強してください。以下の本を参考にしています。より詳しく学びたい方は参考にしてください。

 

 

 

初めてのPython 第3版

初めてのPython 第3版

 

 

入門 Python 3

入門 Python 3

 

 

 

もしも上の参考書が難しいと感じるようであれば、以下の参考書がおすすめです。まだ一度もプログラミングをやったことのない方や以下の説明が難しいと感じる方にはおすすめです。

 

Pythonスタートブック

Pythonスタートブック

 

 

 

では早速、本題の条件分岐に入っていきましょう。

if文

ifの横にある条件式を満たしている場合(true)に、該当の文(はじめにある:からelse:の手前まで)を実行し、そうでない場合はelse:以下を実行します。以下の処理は、数字の5がリストの中に入っているかどうかを判定しています。入ってなければ、elseに飛びます。また、Pythonのコーディングにおける注意点ですが、if文などを使うとき、次の行は半角スペース4つ分をおいてコードを始める必要があります。このJupyter上では、改行をしたときに自動で空白ができますが、開発環境によっては注意しましょう。

f:id:machinetraveler:20170608230756p:plain

 

<補足説明>「print(" %d は入っています。" %(sample_int))」では、変数(sample_int)を文字列の中に表示させるために、%dと%(sample_int)を使っています。%d は整数、%s は文字列、%f は浮動小数点数の場合に設定します。文字列フォーマットといい、「print("{0} は入っていません。".format(sample_int))」のようにして表示することも可能です(変数を複数設定することもできます)。

 

for文

次は、繰り返し文のforです。先ほど作成した辞書型のデータを1つ1つ取り出して、それぞれのキーと値を出力しています。

f:id:machinetraveler:20170608231254p:plain

 

 

なお、以下のような方法でキーと値を取り出すこともできます。これは、あとで説明するオブジェクト指向型プログラミングの特徴で、データ(ここではsample_dic_data)とそれを処理するためのメソッド(以下のitems())がセットになっており、それを活用しています。メソッドとはあとで説明する関数みたいなもので、それを使って処理(ここでは、キーと値を返す)をします。

f:id:machinetraveler:20170608231632p:plain

 

次もfor文を使っています。前回紹介したリストの要素をそれぞれ2倍する処理です。内包表記と言います。

f:id:machinetraveler:20170608232013p:plain

さらにこれに条件を設定して作成することもできます。例えば偶数の数だけsample_data_listから取り出したい場合は、以下のようにします。「if i %2 ==0」を後につけており、i%2は、iを2で割ったあまりを意味しています。

f:id:machinetraveler:20170608232310p:plain

なお、連続した整数を作る時にはrange()との併用が便利です。

f:id:machinetraveler:20170608232457p:plain

 

while文

次の処理は、条件を満たしている限り、計算を続けるwhile文です。数字が90より大きくなった時点で、処理は終わります。

 

f:id:machinetraveler:20170608233150p:plainおそらくここの説明だけでは不十分だと思うので、以下の本を参照してください。

入門 Python 3

Pythonチュートリアル 第3版

 

 

Pythonの関数とクラス

関数

defを使って、関数を作成しています。関数を作成すると、同じような処理を実行したいときに、便利です。1つ目のcalc_multi関数は、2つの数字を引数として、その掛け算を返しています。この引数がinput dataとなって、returnで結果を返し(返り値といいます)、これがoutput dataになります。

その次の関数calc_fibは、再帰と言って、自分の関数を中で呼び出しており、フィボナッチ数(1,1,2,3,5...と前と前々の数字を足して、その数を並べたもの)を作成しています。

なお、コードが長くなって行数をつけたい場合には、該当をセルを選択し、escキーを押した後に「l(エル)」キーを押すと、行数が表示されます。

f:id:machinetraveler:20170608234236p:plain

 

クラス

最後にクラスです。先ほど少し出てきましたが、Pythonオブジェクト指向型のプログラミング言語で、クラスはオブジェクトのひな型みたいなものです。初めて聞いた方は、すぐに理解するのは難しいと思いますので、実際に以下の実装例を見て、雰囲気だけつかんでください。直近はすぐに必要はありませんが、今後、機械学習のライブラリーsklearnなどを使う時に必要な概念(インスタンスなど)です。よく例えられる例が「たい焼き」で、以下のclassのPrintClassはたい焼き機の型で、実際のたい焼きが出来上がったのがインスタンスp1というイメージです。インスタンスとは、クラスからできあがる実体です。

f:id:machinetraveler:20170608235302p:plain

 

このオブジェクト指向とクラスの概念は少し難しいので、もう少し具体的な例を見てみましょう。以下はMyCalcClassを作成しており、3つのメソッドを持っています。

 

f:id:machinetraveler:20170608235449p:plain

 

次に、このクラス(MyCalcClass)からインスタンスを生成します。なお、instance_1とinstance_2は別物として扱われます。

f:id:machinetraveler:20170608235913p:plain

 

instance_1からです。

f:id:machinetraveler:20170609000315p:plain

 

これで、クラスとオブジェクトの説明は終わりますが、以下の参考文献等を見て、まずはイメージだけでも掴めるようになりましょう。

 

Pythonチュートリアル 第3版

Pythonチュートリアル 第3版

 

 

 

入門 Python 3

入門 Python 3

 

 

今日はこれで終わります。頑張っていきましょう。