Python初心者のためのif文・for文【条件分岐と繰り返し処理の基本】

ノートパソコン(薄黄)Python
スポンサーリンク
スポンサーリンク

「if文を使いたいけど、わかりません…」

「for文って使えると便利って聞いたけど…」

上記の疑問にお答えします。

if文とfor文は、コンピューターに面倒な判断や繰り返し作業をさせるのに必要な構文です。

Pythonでif文・for文を使いたいけど、よく分からない方に向けて、基礎的な文法を分かりやすく解説しますので、この記事を読んでもらえればif文・for文を理解することができます。

具体的には、次のことを解説しています。

  • if文とfor文におけるブロック定義の作法
  • 比較演算子と論理(ブール)演算子
  • if文とは
  • for文とは

 

「偉そうに語るおまえは誰やねん。」と思われるので、私のことも少し。

私のプログラミング歴は約5年で、本職での開発経験はありませんが、一応、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文の種類としてelseelif 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の学習をはじめてみて、「このやり方であっているのかな?」と不安を感じている

 

Pythonで、Webスクレイピングやデスクトップアプリ作成のために独学した経験をもとに、Pythonの学習ステップをまとめています。

独学は孤独になりがちなので、学習の参考に是非ご覧ください。

Pythonの独学ロードマップ【独学方法の経験談有り】
Pythonの独学ロードマップについて解説しています。プログラミング未経験だった私の経験をもとに、独学の進め方や学習に必要な情報を提供しています。

 

ご清聴ありがとうございました。