「if文を使いたいけど、わかりません…」
「for文って使えると便利って聞いたけど…」
上記の疑問にお答えします。
if文とfor文は、コンピューターに面倒な判断や繰り返し作業をさせるのに必要な構文です。
Pythonでif文・for文を使いたいけど、よく分からない方に向けて、基礎的な文法を分かりやすく解説しますので、この記事を読んでもらえればif文・for文を理解することができます。
具体的には、次のことを解説しています。
- if文とfor文におけるブロック定義の作法
- 比較演算子と論理(ブール)演算子
- if文とは
- for文とは
「偉そうに語るおまえは誰やねん。」と思われるので、私のことも少し紹介させてください。
たいらーのプロフィール
- 文系四大出身。ソフトウェア開発の経験はなしですが、IT業界に身を置いています。
- 開発者やユーザーとのパイプ役など、業務にプログラミングスキルを活かす。
- Pythonは独学で習得。スクレイピングや作業の自動化などに勤しんでいます。
サンプルコードをお見せしつつ解説するので、この記事を読んで実際に手を動かしてみてください。
最終的にあなたもif文・for文が使用できるようになります。
1.if文とfor文におけるブロック定義の作法
Pythonでif文やfor文を書くときは、ひとつ注意しなければならないことがあります。
それは「インデントでブロックを定義する。」です。
Pythonでは、ifやfor以下の処理をインデント(字下げ)することで、「ここはif文の処理だよ。」とコンピューターに分かるようにする必要があります。(あくまでPythonの話です。プログラミング言語によって作法が異なります。)
インデントせずに記述すると、エラーになるので注意しましょう。
2.比較演算子と論理(ブール)演算子
if文では、比較演算子とブール演算子をよく使用するので覚えておきましょう。
比較演算子とは、2つの値を使用してブール値(True/False)を返します。
論理(ブール)演算子とは、ブール値の組み合わせを評価し、ブール値(True/False)を返します。
次の表に比較演算子と論理演算子をまとめます。
比較演算子 | 説明 |
== | 等しい |
!= | 等しくない |
< | より小さい |
> | より大きい |
<= | 以下 |
>= | 以上 |
ブール演算子 | 説明 |
---|---|
And | 二項のどちらもTrueのときTrueを返し、それ以外はFalseを返す。 |
OR | 二項のうち少なくともどちらかがTrueのときTrueを返し、どちらもFalseのときにFalseを返す。 |
Not | ブール値を反転させる。 |
3.if文とは
ある条件に従いものごとを処理する構文がif文です。
Excel関数のifと考え方は同じで、例えば「条件が一致するときにAという処理をする。それ以外は処理を終了する。」というように、条件ごとに処理を変えたいときに使います。
if文の最もシンプルなコードを次に示します。
このソースコードは、「Taro」が入力されたとき、「こんにちわ」と表示します。
「Taro」以外が入力された場合は、何もしません。
name = input() if name == "Taro": print("こんにちは")
・条件分岐の種類(else/elif else)
if文の種類としてelseとelif elseがあります。
それぞれ、条件を複雑に分けて処理をしたいときに使うので、覚えておきましょう。
・if else
If文だけでは、条件に一致したときの処理しかしません。不一致だった場合の処理をさせたい場合に、else文を使用します。
以下がサンプルコードです。
このソースコードは、「Taro」が入力されたとき、「こんにちわ」と表示し、「Taro」以外が入力された場合は、「さようなら」と表示します。
name = input() if name == "Taro": print("こんにちは") else: print("さようなら") #不一致(False)だったときの処理
・if elif else
if文だけでも、複数の条件で処理を分けることができますが、elif else文を使用したほうがすっきりとした記述ができます。
以下がサンプルコードです。
このソースコードは、4つに分岐しています。
「Taro」が入力されたとき、「こんにちわ」と表示し、「Jiro」が入力されれば「こんにちは次郎さん」と表示します。
「Saburo」が入力されれば、「こんにちはサブちゃん」と表示されますが、「Taro」以外が入力された場合は、「さようなら」と表示します。
name = input() if name == "Taro": print("こんにちは") #if以下の処理はインデントして記述する elif name == "Jiro": print(”こんにちは次郎さん”) elif name == "Saburo": print(”こんにちはサブちゃん”) else: print("さようなら") #不一致(False)だったときの処理
4.for文とは
ある処理を繰り返し実行(ループ処理ともいう)するときに使う構文をfor文といいます。
同じことを繰り返し人がやると面倒だったり、人的ミスが起きたりとデメリットがあります。
このような作業をコンピューターに置き換えることで単純作業から解放されるだけでなく、ミスも起こりにくくなります。
以上のような理由で、プログラミングではfor文もよく利用されます。
・for文の基本形(for 変数 in オブジェクト)
まず、for文の基本形「for 変数 in オブジェクト」について説明します。
上記のオブジェクトとは、for文で繰り返す範囲を指定しています。
for文の変数は、繰り返す対象のデータを入れておく作業用の変数です。
アルファベットの“i”や“j”がよく使われます。
次のソースコードでは、リストに格納されているデータの分(=繰り返す範囲)だけ、変数iに渡されたデータをprint文で繰り返し表示しています。
list = [a, b, c] for i in list: print(i) #実行結果 a b c
・指定した回数分を繰り返す(range関数)
処理を繰り返す回数を指定して実行することもできます。
繰り返す回数を指定する場合は、range関数を使います。
一番オーソドックスな記述をします。
次のサンプルコードは、変数iに0から4までの数字が代入され、表示されます。
for i in range(5): print(i) #実行結果 0 1 2 3 4
・処理の中断とスキップ(break/continue)
プログラミングをしていると、意図的に繰り返し処理から抜けたいときがあります。
このときにbreakを使います。
breakは、breakに到達すると即時に処理から抜けることができます。
また、ある条件下で処理をせずに飛ばしたいときは、continueを使用します。
continueは、continueに到達すると処理をスキップして、for文の先頭に戻り、次の処理を実行します。
以下にサンプルコードを示します。
まず、変数 i が奇数だと、print文で変数iの値が表示された後、continueで処理がスキップされ、処理が最初に戻ります。continuあとのprint文は処理はされません。
実行が繰り返され、変数iが6になるとbreakで処理から抜けるので、6以降は表示されなくなります。
for i in range(10): if i % 2 == 1: print(i) continue #奇数はスキップされ、先頭に戻ります。 print("表示されません") #このprint文は処理されない。 elif i == 6: break #6に到達すると処理から抜けます。 #実行結果 1 3 5
・正常終了時の処理(else)
for文で正常終了したときの処理をしたい場合は、elseを使用します。
ただ、breakによって途中で処理を抜けた場合は、実行されないので注意が必要です。
前出のサンプルコートに追記したものが次です。
変数 i が奇数の場合、処理がスキップされますが、変数の値が2と4のときは正常に処理され、変数i
の値が表示されます。
そして、変数iが6になるとbreakで処理から抜けるので、6以降は変数iの値が表示されなくなります。
for i in range(10): if i % 2 == 1: continue #奇数はスキップされ、先頭に戻ります。 elif i == 6: break #6に到達すると処理から抜けます。 else: print(i) #実行結果 0 2 4
・活用例
最後は、Webスクレイピングのソースコードを例に、実践的な使い方を紹介します。
利用シーンとして、出馬表にある競走馬成績ページのURL取得を想定しています。
何か一つ覚えておけば応用できると思うので、参考にしてください。
コードはこんな感じです。
import requests from bs4 import BeautifulSoup url = requests.get('https://umano-ie.com/racesample/') #出走表サンプルのWebページを取得 soup = BeautifulSoup(url.text, "html.parser") umalist = [] #データを格納するリストを用意 for a in soup.select('td > a[href^="https://umano-ie.com/horsedata-sample"]'): #競走馬データのリンクを指定 urldata = a.get('href') umalist.append(urldata) #データをリストに格納 print(umalist)
リストに競走馬8頭分のURLが格納されていれば成功です。
5.まとめ
以上、Pythonのif文とfor文ついて解説しました。
プログラミングでは、条件に一致するときだけ処理させたいことや、繰り返し処理が必要な場面が多いので、どちらもよく使います。
このあたりが書けるようになると、プログラミングの幅が広がるので、覚えておきましょう。
Pythonをどのように学び進めればよいか、お悩みの方は『Pythonの独学ロードマップ【独学方法の経験談有り】』をご覧ください。
私個人がPythonを独学で身につけたロードマップについて解説しています。
ご清聴ありがとうございました。