横浜国立大学理工学部建築都市環境系学科卒
一級鉄筋技能士
プログラムは変数を理解して、条件分岐と繰り返しさえ覚えてしまえば、ある程度のものは作れるようになります。
変数???となっていても大丈夫です。
プログラム始めた時には、変数の概念やコードの記述がわからず苦労すると思います。
初学者がつまずかないように丁寧に説明していきます。
プログラムには関数やクラスなどの考え方もあり、これらも大事ですが、その前にとても大事な変数、条件分岐、繰り返し処理について習得していきましょう。
目次
変数とは
最初は、変数は「値を入れる箱」と覚えてもらえれば良いです。
変数には値以外にも「関数」「クラス」など色々入れることができますが、頭の隅に置いて、まずは値が入ることを理解しましょう。
「値を入れる箱」をそのまま図にしてみます。
変数名(箱の名前)は「a」とします。名前は自分の分かりやすいものをつけます。
値は何でも良いのですが、今回は「10」にしています。
「a」という変数(箱)が10という値を持ったということになります。
これをコードにしてみましょう。
1 |
a = 10 |
となります。
「=」は図の「←」と同じで値を入れるということです。
最初に勘違いしやすいところですので、注意してください。
変数を箱でイメージしていますが、自分の分かりやすいイメージを持ってもらえればいいと思います。
現役エンジニアはコードを書く時、「変数は箱だ!」「変数は箱だ!」と考えながらコードを書いてなく、最初の分かりやすさのために箱がイメージしやすいとされています。
変数を使ってBMIを算出してみよう
変数aに10を入れただけだと、何をしているか分からないので、より具体的に「身長」「体重」から「BMI」を求めてみましょう。
- 変数 tall(身長)に1.7[m]
- 変数 weight(体重)に70[kg]
- bmiはweight÷tall÷tallで求められるので、weightとtall変数を使って計算します。
変数名は英語の小文字でわかりやすいものをつけましょう!
箱にこだわって、同様にイメージ図をかくと下記の図のようになります。
ここで新しいポイントが出てきます。
変数同士は計算で使います。
計算ではお馴染みの四則演算(+、−、×、÷)を使いますが、後ほど説明しますが、今回は割り算を使います。
「÷」は「/」を使います。
実際にコードで書いてみましょう。
1 2 3 4 |
tall = 1.70 weight = 70 bmi = weight / tall / tall print(bmi) |
1 2 |
出力結果 24.221453287197235 |
計算結果のbmiは確認したいので、print関数を使っています。
print関数は()の中に変数や文字を入れると表示してくれるものです。
四則演算結果は初期化されるまで上書き保存される
さて先ほど使った四則演算ですが、変数同士を計算するのに使います。
他にも余りを求めたり、割り算の切り捨て、切り上げ、平方根など色々ありますが、今回は四則演算を紹介します。
演算 | 記号 |
---|---|
足し算 | + |
引き算 | – |
掛け算 | * |
割り算 | / |
実際にコードにしてみましょう。
変数a = 10 と 変数b = 5 を用意して、変数cに各計算結果を入れます。
まず足し算のコードを書いてみましょう。
1 2 3 4 5 |
a = 10 b = 5 c = a + b print("足し算") print(c) |
1 2 3 |
出力結果 足し算 15 |
変数aとbに値を入れて、足し算した結果をcに入れて、printで表示しています。
では残りの3つも計算してみましょう。
1 2 3 4 5 6 7 8 9 |
c = a - b print("引き算") print(c) c = a * b print("掛け算") print(c) c = a / b print("割り算") print(c) |
1 2 3 4 5 6 7 8 |
出力結果 引き算 5 掛け算 50 割り算 2.0 |
計算はちゃんと合っていますね。
ここで2つポイントがあります。
・a、bに改めて値を入れなくても値は保持されている
・cには計算結果が都度上書きされている
ノートブックでの実行例を参考に下記に添付します。
最初のセルでaとbに値を入れました。これは次のセルでも保持されてそのまま実行されます。
このa,b,cの変数はノートブックであれば、メニューのKernel > Restartなどで「初期化」されるまで値を持ったままになります。
type関数で型を確認する
ここまで、変数には数値を入れてきました。
数値だけでなく、文字なども使いますし、数値は整数と小数でまた違います。
型 | 説明 |
---|---|
int | 整数 |
float | 小数 |
str | 文字列 “hello” や ‘hello’などダブルコーテーション「”」やシングルコーテーション「’」で囲います。 |
bool | 真偽値(0/1やTrue/Falseのことですが、True/Falseを使います。) |
他にはlistやtuple、dict型などがありますが、今は他にもあるんだなということを頭の隅に置いておいておくだけで良いです。
実際にコードに書いてみます。
変数の型の種類はtype関数で確認できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
a = 10 print(a) print(type(a)) b = 1.1 print(b) print(type(b)) c = 'hello' print(c) print(type(c)) d = True print(d) print(type(d)) |
1 2 3 4 5 6 7 8 9 10 |
出力結果 10 class 'int' 1.1 class 'float' hello class 'str' True class 'bool' |
printの中にtype関数を入れていますが、まだ関数について知らない方は、変数の型を表示しているのだということがわかれば良いです。
条件分岐とは
ここまでは、変数を計算や表示するのに使ってきました。
次はその変数の値が、この値だったら、この処理、この値だったら、別の処理といった感じに、変数の値によって処理を分ける方法を習得していきます。
例えば、BMIであれば、25以上であれば、「あなたは肥満です!」という警告を出すなどが考えられると思います。
条件分岐ではif文というもの(構文)を使います。
ここで、python特有のポイントが出てきます。
条件の後にコロン(:)をつける
そのあとはタブ若しくはスペース(4つ推奨)のインデント(余白)を入れる
条件の書き方
条件の書き方もpythonは色々ありますが、基本的なものを紹介します。
比較演算子 | 説明 |
---|---|
変数a == 変数b | aとbの値が同じ。文字や数値で使えます。 |
変数a != 変数b | aとbの値が違う。文字や数値で使えます。 |
変数a > 変数b | aがbより大きい |
変数a >= 変数b | aがb以上 |
変数a < 変数b | aがbより小さい |
変数a <= 変数b | aがb以下 |
これらは比較演算子と呼ばれるものです。他にもありますので、さらに知りたい方は公式ドキュメントの方も参考にしてみてください。
実際にコードをいくつか書いてみますので、参考にしてみてください。
ifのみ
1 2 3 |
bmi = 26 if bmi >= 26: print("あなたは肥満です!") |
1 2 3 |
出力結果 あなたは肥満です! |
ifとelse
1 2 3 4 5 |
bmi = 26 if bmi >= 26: print("あなたは肥満です!") else: print("あなたは肥満ではありません!") |
1 2 3 |
出力結果 あなたは肥満です! |
ifとelifとelse
条件は18.5 <= bmi < 26のようにすることもできます。
1 2 3 4 5 6 7 |
bmi = 19 if bmi >= 26: print("あなたは肥満です!") elif 18.5 <= bmi < 26: print("あなたは正常体型。") else: print("あなたは低体重です!") |
1 2 3 |
出力結果 あなたは正常体型。 |
インデントを間違えた場合はエラーになる
さて、インデントがなかった場合どうなるでしょう?
試してみましょう。
1 2 3 |
bmi = 26 if bmi >= 26: print("あなたは肥満です!") |
1 2 3 4 5 6 7 |
出力結果 File "<ipython-input-14-0183c5e6b821>",line 3 print("あなたは肥満です!") ^ IndentationError: expected an indented block </ipython-input-14-0183c5e6b821> |
英語ですがインデントエラーとなりました。
このようにインデントを正しく入れないと、エラーになったり、正しく条件分が動かなくなります。
繰り返し(イテレーター) for文とwhile文について
繰り返しとは同じ処理を繰り返す方法です。
構文的にはfor文とwhile文というものがあります。
なぜ処理を繰り返す必要があるのかというと、例えば
- フォルダの中にあるファイルを順に処理する
- ファイルの中に複数行あり、1行ずつ処理する
などがありますが、条件分岐とともに繰り返し文がないと、アプリケーション開発は難しいでしょう。
for文
for文は少し、理解が大変な部分でもあります。
まずはよく使われる何回繰り返すという処理を使ってみましょう。
構文は次のようになります。下記例では、5回繰り返すfor文です。
range(5)の5の部分を変更することで繰り返す回数を変更することができます。
また、iには繰り返すたびに0, 1, 2 ,3 ,4, …と値が変わります。
実際にコードで見てみましょう。
1 2 |
for i in range(5): print(i) |
1 2 3 4 5 6 7 |
出力結果 0 1 2 3 4 |
最初は、この構文だけでも繰り返し処理ができますが、より正確に把握していきましょう。
for文の本質はシーケンス型(複数のデータ)を順番に取得して処理する
for文の構文は実際には次のようになります。
まず、シーケンス型は「複数のデータが入ったもの」という風に理解しておけば良いです。
for文の本質はシーケンス型(複数のデータ)を順番に取得して処理するということです。
先ほどの5回繰り返す文はrange(5)で[0, 1, 2, 3, 4]のシーケンス型である複数のデータを作っています。
その順番に[0, 1, 2, 3, 4]から順に取り出された数値が i に入って、処理へと進みます。
今使っているシーケンス型は数値を使っていますが、これがフォルダ内のファイルのリストをシーケンス型のところに使えば、順にファイルの処理ができます。
while文は条件が満たされるまで処理を繰り返す
次はwhile文です。
while構文は次のようになります。
条件が満たされるまで処理を繰り返します。
for文と同じように5回繰り返すコードを紹介します。
1 2 3 4 |
count = 0 # 変数countに0を入れる while count<5: # 条件(count<5)の間繰り返す print(count) # countを表示 count=count+1 # countに+1 |
1 2 3 4 5 6 7 |
出力結果 0 1 2 3 4 |
このコードでは
- 変数countに0を入れて
- whileの条件でcount<5になるか確認
- countを表示して、countを1つ増やす
今回はわかりやすくするために、コードの後ろに# ***がついていますね。
「#」をつけることでその後の文字はコードとして使われないようになり、コメントやメモをつけることができます。
まとめ
AIのコードを描けるようになりたいという方は、今回紹介した型以外にも、for文で出たシーケンス型やnumpyなどの配列データなどの習得も必要になります。
今回のプログラム言語全てに通じる今回の内容をしっかり理解しておきましょう。