第4回:Pythonプログラミング入門 条件文(if文)
プログラミングにはある一連の処理の中で、Aの場合はA'という処理、Bの場合はB'という処理、そうでない場合は何も処理しない、といったように条件によって処理を変えることが頻繁に登場します。
Pythonでは、if、elif、elseのキーワードを条件文に使います。
具体的なコードに落とす前に日本語を使って上記を書いてみます。
※例なので、実行しないでください
もし A(式) なら
A'という処理コード群
もし B(式) なら
B'という処理コード群
もしそうでなければ
(なにも書かない )
最初のA(式)がTrueと評価される場合、「A'という処理コード群」に書かれたコードが実行され、Bは評価されず、B'という処理もされません。A(式)がFalseと評価されB(式)がTrueと評価される場合、A'は処理されず、「B'という処理コード群」に書かれたコードがすべて実行されます。
上記の初めの「もし」はif文、2つ目以降の「もし」はelif文、最後の「もしそうでなければ」はelse文と呼ばれます。
実際にコードに落とし込むと下記のようになります。
time = "朝"
if time == "朝":
print("おはようございます!")
elif time == "昼":
print("こんにちは!")
else:
# 処理なし
if文、elif文、else文の最後にはコロン(:)が必要になるので注意してください。
また条件文はif文のみや複数のif文の記載もできます。
# if文単独の記載
country = "日本"
if country == "日本":
print("初めまして!")
# 複数のif文を記載する場合
a = 2
if a == 2:
print("aは2です。")
if a % 2 == 0:
print("aは偶数です。")
if a % 2 != 0:
print("aは奇数です。")
「if文単独の記載」のコードでは、1回のみ評価され、式の結果はTrueなので、処理が実行されます。「複数のif文を記載する場合」のコードは上2つのif文がTrueと評価され、インデントされた下のプログラムが実行されますが、3つ目のif文はFalseのため実行されません。
複数のif文と間にelifを入れて記載した内容の違いについてですが、
複数if文を書いた場合では、上からすべてのif文が評価され、各評価でTrueの場合はそれぞれインデントされたコード群が実行されます。
対して、elifを使って複数の条件文書いた場合は、頭のif文から評価され、最初に評価結果がTrueを返した式のインデントしたコード群のみ実行されます。仮に下記のように書いた場合、「aは2です。」という表示のみされます。
a = 2
if a == 2:
print("aは2です。")
elif a % 2 == 0:
print("aは偶数です。")
elif a % 2 != 0:
print("aは奇数です。")
else:
print("elseに該当")
第3.5回:Pythonプログラミング入門 補足(算術演算子・比較演算子まとめ)
前回の補足です。
第3回:Pythonプログラミング入門 定数と変数 - 週末SEのメモブログ
算術演算子
演算子 | 処理内容 | 例 | 結果 |
+ | 足し算 | 2 + 5 | 7 |
- | 引き算 | 5 - 2 | 3 |
* | かけ算 | 5 * 2 | 10 |
/ | 割り算 | 5 / 2 | 2.5 |
** | 累乗 | 5 ** 2 | 25 |
// | 整数の割り算(切り捨て) | 5 // 2 | 2 |
% | 剰余(割り算の余り) | 5 % 2 | 1 |
計算される順番は算数や数学と同様に
かっこ → 累乗 → かけ算 → 割り算 → 足し算 → 引き算
の順です。
比較演算子
演算子 | 評価 | 例 | 結果 |
> | より大きい | 5 > 2 | True |
< | より小さい | 5 < 2 | False |
>= | 以上 | 5 >= 5 | True |
<= | 以下 | 5 <= 2 | False |
== | 等価 | 5 == 2 | False |
!= | 非等価 | 5 != 2 | True |
論理演算子
演算子 | 評価 | 例 | 結果 |
and | かつ | True and True | True |
or | または | True or False | True |
not | 否定 | not True | False |
andは左右に与えられた式がともにTrueの場合にTrueを返します。
orは左右に与えられた式のどちらか一方がTrueの場合にTrueを返します。
notは式の前に置き、式の評価結果を逆転します。Trueと評価される式の前に置いた場合、Falseを返します。
第3回:Pythonプログラミング入門 定数と変数
前回の記事
第2回:Pythonプログラミング入門 データ型 - 週末SEのメモブログ
でPythonのデータ型について紹介しましたが、
今回の記事では、それらの使われ方について紹介していきます。
定数
定数とは、絶対に変わらない値のことです。今までの記事に登場した数値はすべて定数で、2は常に2であり、1.08は常に1.08です。
変数
定数に対して、変数は参照している値を変更することができる値のことです。
よく箱と例えられます。Aという名前の箱を用意して、その中に3という数字を入れたり、100という数字を入れたりできます。
変数への代入
変数について触れましたが、変数は1文字以上の文字の集まりでその名前を定義されます。そして代入演算子(=)を使用して値が変数に入れられます。
int a;
a = 100;
# または
int a = 100;
C言語やjavaでは、上記のように変数のデータ型を宣言してから値が代入されます。
しかし、Pythonではこれを簡略化し、代入演算子を使って値を代入した時に変数が作成されます。
a = 100
変数のインクリメント
変数について紹介したところで、プログラムでよく登場するインクリメント(増加)について触れます。ある変数に対して、1を足す式を再代入します
a = 100
a = a +1
Pythonでは、これを下記のように省略して記載できます。
a = 100
a += 1
変数のデクリメント
インクリメントに対して、デクリメント(減少)させる処理もプログラムではよく登場します。こちらも表記についてはインクリメントと同様です。
b = 100
b = b - 1
# または
b = 100
b -= 1
int型について例示しましたが、他のデータ型についても代入の方法は同じです。
変数名の制限(注意点)
変数名には自由に名前を付けることができますが、以下の4つの制限があります。
- 変数名にはスペース(空白文字)は使えない
- 変数名には、文字、数字、アンダーバー(_)記号のみ使える
- 変数名の1文字目に数字は使えない(アンダーバーは使えるが、アンダーバーで始まる変数名は特別な意味を持ちます(後述))
- Pythonの予約語は変数名に使えない(
https://docs.python.org/ja/3/reference/lexical_analysis.html#keywords
)
第2回:Pythonプログラミング入門 データ型
データ型とは、データを性質にによってグループ分けしたもののことです。
既に登場した"Hello, World!"はオブジェクトと呼ばれます。
オブジェクトについて簡単に触れると、Pythonでは、同一性(コンピューターのメモリのどこに格納されているか?)、データ型(どんな性質のデータか?)、値(100であれば、100という数値を表すオブジェクトの値が100)という3つの要素で構成されます。
str(Stringの省略)型:文字列
strデータ型は文字列と呼ばれます。文字列型は1つ以上の文字の羅列で、シングルクォートまたはダブルクォートで囲まれ、表現されます。
"Hello, World!"
'Hello, World!'
この際、開始に使用したクォート(「"」または「'」)と終了時にしようするクォートは合わせる必要があります。
int(Integerの省略)型:整数
int型は整数値(1、2、3、4など)を表します。
str型と異なりクォートで囲む必要がなく、四則演算(+、-、*、/)や剰余(%)、累乗(**)が扱えます。
2 * 2
float型:浮動小数点
float型ではint型で扱えなかった小数点を含む値(1.08や9.999)を扱うことができます。
1.08 + 9.999
bool(booleanの省略)型:真偽
bool型の値は、 True か False のいずれかのみです。
NoneType型
NoneType型のオブジェクトは常にNoneという値しかありません。
値が存在しないことを表すために使用されます。
第1回:Pythonプログラミング入門 コードについて
前回の記事でPythonとは何かに触れた際、「Hello, World!」を出力してみました。
では、これを10回出力するにはどうすれば良いでしょうか?
同じプログラムを10回記述して実行する。確かにそれも間違いではありません。しかし、プログラムの世界では同じ作業を繰り返すことは嫌われます。
そこで下記のようにコードを対話型シェルに入力して実行してください。
for i in range(10):
print("Hello, World!")
10回「Hello, World!」が表示されましたか?
IDLEを利用している場合、1行目の「for i in range(10):」を入力して改行した時にインデント(字下げ)が自動でされるので問題ありませんが、そうでない場合はprintの前に半角スペースが4つ入っているかを確認してください。
Pythonの出力
既に上でも触れましたが、Pythonで文字を表示したい場合はprintとクォート(")を使ってプログラムを書きます。
print("Pythonプログラミング入門")
Pythonのコメントアウト
Pythonのコメントアウトの前にプログラム全般に対してのコメントの意義について説明します。上記のような単純なプログラムであれば、どんな処理をしているか一目瞭然ですが、プログラムが長くなればなるほど、そのプログラム(ソースコードまたはコードとも呼ばれます)がどんなことをしているのか一目で把握することが困難になります。毎回毎回コードを頭から読んでいたのでは時間がいくらあっても足りません。
そこで、このプログラムでどんな処理をしているのかを後から見た人に伝えるためにプログラムの間に説明を記入する方法が取られます。それがコメントアウトです。
# コメントアウト
print("Pythonプログラミング入門")
このように記述すると、
1行目の「# コメントアウト」は表示されませんし、処理として認識されることもありません。コメントアウトでは、1行に入る内容であればなんでも記入することができます。
Pythonのプログラムは行単位
基本的にPythonのプログラムは行単位で認識されます。
前述の例でいくと、「for i in range(10):」が繰り返しの処理、「print("Hello, World!")」は「Hello, World!」を表示する処理といった具合です。
しかし、ものすごく長い文章を表示する場合、1行に収まらないことは多々あります。
そんなときは三重クォート(""")で囲みます
print("""長い
コメント
アウト""")
三重クォートで囲む以外にも丸かっこ(())や角付かっこ([])で囲んだり、バックスラッシュ(windowsでは¥マーク)を利用することで、行を分けることができます。
バックスラッシュの場合は、printのすぐ後ろにつけることで表示内容を別の行に記載していくことができます。
print\
("""長い
コメント
アウト""")
予約語について
予約語とは、Pythonで予め特別な意味を持たせている単語のことです。
前述のprintやforは予約語に該当し、変数(後々説明します。)に使えないなどの制限があります。
Pythonって何?
Pythonはオランダのグイド・ヴァン・ロッサムによって開発されたオープンソースのプログラミング言語です。
Pythonの特徴
- 読みやすいプログラミング言語
- 学びやすい言語
- あらゆるOS、コンピューター上で動作している
- ウェブサーバーからデスクトップアプリまで作れる
- データ分析の需要の高まりからPythonプログラマーの需要も伸びている
Pythonをインストールしてみよう
PythonにはPython2とPython3が存在していますが、筆者がPython3ユーザーであるため、当ブログ内ではPython3を前提に話を進めていきます。
公式サイト https://www.python.org/downloads/
上記の公式サイトからご利用のOS(Windowsまたはmac)に合わせてPythonをダウンロードしましょう。Linux系のUbuntuを利用している場合は元々Python3がインストールされています。
※筆者はWindows10を利用しています
対話型シェル
Pythonには「PyCharm」という有名な開発環境が存在しますが、元々は「IDLE」(Interactive DeveLopment Environment)という開発環境が用意されています。
Windowsの場合、スタートボタンから「IDLE」を見つけてみてください。
当ブログ記事では、「IDLE」ベースで話を説明していきます。
※毎回探すのは面倒なので、IDLEのショートカットをデスクトップに貼る事をおすすめします
IDLEを起動すると画像のようなメッセージが表示されます。(バージョンなどの違いでメッセージ内容が異なることがあるので、別の内容が表示されても慌てないでください)
IDLEは対話型シェル(インタラクティブシェル)と呼ばれ、ここにPythonのコードを直接入力して、その結果を表示することができます。
試しに以下のように >>> の後に入力して、Enterを押してみてください。
print("Hello, World!")
「Hello, World!」と表示されましたか?
もしよく分からないエラーメッセージが表示されていたら、カッコ「()」や引用符「"」が全角になっていないかなど、確認してみてください。
ちなみにプログラミングの世界では、慣習からか、プログラミング入門の一番最初に「Hello, World!」と画面表示させるのがメジャーになっています。
おめでとうございます!これであなたはプログラミングを書いたことになります!
思っていたより全然簡単ではないでしょうか?
保存の方法
せっかくプログラムを書いたので、保存の方法にも触れます。
毎回毎回実行したいプログラムを書かなければならないのでは、大変ですよね?
IDLEでは再利用したいコード(書かれたプログラムのこと。ソースコードとも)を保存できます。IDLEのメニューバーの左上に「File」というタブがあるので、ここをクリックします。
「New File」という項目をクリックすると、真っ新なエディタが開くので、先ほどと同様に「print("Hello, World!")」と入力してください。
入力したら、同じくメニューバー「File」をクリックして、「Save As...」をクリックしてください。
これはWordやExcelの「名前を付けて保存する」と同じことなので、任意の名前を指定して保存してください。筆者は仮に「hello_world.py」とします。
※「.py」の部分を拡張子と呼び、このファイルがPythonのファイルであることを示します
保存が出来たら、同じくメニューバーの「Run」をクリックして、「Run Module」をクリックしてください。
先ほど、ご自身で「print("Hello, World!")」と入力してEnterを押したときと同じように表示されましたか?
これで今後は保存したプログラムを何度でも実行できるようになりました。
余談ですが、ファイル名を「hello_world.py」としましたが、拡張子以外は好きな名前をつけて構いません。