2018/11/04
2020/04/14
Python入門〜for文、if文を使って条件処理をする〜
このページではPythonでのfor文を使ったループ処理や、if文を使った条件分岐の書き方について解説していきます。
実行から変数の作成についてはこちら→Python入門〜実行から変数(リスト型・辞書型)の作成まで
関数、ライブラリについてはこちら→Python入門〜関数とライブラリ〜
目次
for文
for文とはある処理を繰り返し行いたい場合に用いる文法です。同じ文を何度も書く代わりにfor文の中に処理を書くことでその処理を決められた回数繰り返すことができます。
for文は次のように書きます。
for 変数 in リスト: 処理1 処理2
for文はリストの長さ分だけ繰り返しが発生し、変数には1繰り返しごとにリストの要素が順番に代入されます。上のコードでは、処理1はfor文の中、処理2はfor文の外なので(インデントで判断)処理1が繰り返された後に処理2は1回だけ実行されます。
Pythonではforやこの後解説するifなどのまとまった処理を記述する際は同じインデント(字下げ)でブロックを作って区別します。
複数行に渡る処理をfor文の中に記述したい場合には次のようにfor文の中に入れたいところまで次のようにインデントを下げて書きます。
for 変数 in リスト: for文の中に入れたい処理1 for文の中に入れたい処理2 for文の中に入れたい処理3 for文の外の処理2
いくつかfor文の例を見てみましょう。
""" 出力結果: 1 2 3 """ for i in [1, 2, 3]: print(i)
このプログラムではリストの中の整数1, 2, 3をprintを繰り返すことで順番に出力しています。
for i in listA: print(i)
次に、このプログラムでは変数iにlistAの要素が一つずつ代入され、print文が実行されます。
range関数で連続した整数を楽に生成する
一定回数for文を実行したい場合はrange関数を使うと便利です。
range関数とは組み込み関数の一つです。
組み込み関数とは、使用頻度の高さからPython本体に直接組み込まれている関数のことを指します。
range関数は次のように使います。
書き方 | 意味 |
---|---|
range(num) | 0以上num未満の整数 |
range(num1, num2) | num1以上num2未満の整数 |
range(num1, num2, num3) | num1以上num2未満で増加量num3の整数 |
range関数を使ったfor文の例を見てみましょう。
for i in range(10): print(i)
上のコードはfor文を使って、0から9まで出力するプログラムです。
変数iが0~9まで変動します。range(10)の中身の数を変えることで、変動範囲を変更することができます。
for文を使ったリストの内包表現
さらに、for文を使うと指定範囲の整数の入ったリストを簡単に作ることができます。
# 出力結果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] newList = [i for i in range(10)] print(newList) # 1~10のリスト # 出力結果: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] newList2 = [i+1 for i in range(10)] print(newList2)
上のプログラムのようにリストの中にfor文を入れ、range関数で範囲を指定することで指定の範囲の整数が連続で入ったリストを作成することができます。
if文
if文とは
次にif文について解説します。
if文とは、ある条件が満たされるかによって処理を変えたいときに条件分岐をするために使います。
ifの後ろに条件文を記述し、条件が満たされるなら条件文はTrueを返しif文の中の処理が実行されます。
条件が満たされないとき条件文はFalseを返しif文の中の処理は実行されません。
if文は次のように書きます。
if 条件1: 処理1 elif 条件2: 処理2 else: 処理3
elifとはifの条件に該当しなかった場合に、追加でチェックする条件を記述したい時に使います。
elseとはif、elifのどちらの条件にも該当しなかった場合の処理をしたいときに使います。
上の例ではまず条件1をチェックし該当していれば処理1が実行されます。
条件1に該当しておらず条件2には該当している場合には処理2が実行されます。
条件1にも条件2にも該当していなかった場合のみ処理3が実行されます。
elifとelseは必要でない場合には必ずしも書く必要はありません。
具体的なif文の例を見てみましょう。
#if文, 100より大きいかの判定 num = 98 if num > 100: print(num, "は100より大きい") elif num < 100: print(num, "は100より小さい") else: print(num, "は100です") #出力結果: 98は100より小さい
このプログラムでは変数numが100より大きいか小さいか、または等しいかの判定をしています。今、numは98で100より小さいのでelifの処理が実行され「98は100より小さい」と出力されます。
条件文の書き方
色々な条件文の書き方は以下の通りです。
表: 条件文の書き方 演算子演算子 | 例 | 真となる条件 |
---|---|---|
!ERROR! unexpected operator '=' | a == b | aがbと等しい |
!= | a != b | aがbと異なる |
> | a > b | aがbより大きい |
>= | a >= b | aがbより大きいか等しい |
< | a < b | aがbより小さい |
<= | a <= b | aがbより小さいか等しい |
演算子 | 例 | 真となる条件 |
---|---|---|
and | 条件a and 条件b | 条件aもbも真 |
or | 条件a or 条件b | 条件aかbが真 |
not | not 条件a | 条件aが偽 |
for文とif文の組み合わせ
if文の基本がわかったところでfor分やif文を使ったより複雑な処理を見てみましょう。
次のプログラムはリストから偶数だけを抽出して新しいリストを作ります。
# 出力結果:[6, 8, 4, 10, 14, 16, 86, 54] numList1 = [3, 5, 6, 8, 4, 10, 11, 14,16, 13, 5, 86, 9, 54] numList2 =[] for i in numList1: if i % 2 == 0: # iが偶数なら実行 numList2.append(i) print(numList2)
numList1からfor文で順番に整数を取り出し、if文で偶数かどうかを判定します。
偶数だった場合のみ”numList2.append(i)”が実行されnumList2に追加される仕組みです。
下のプログラムはfor文とif文を組み合わせた内包表現の例です。
より範囲を指定した整数のリストが作成できることがわかります。
# 偶数だけのリストを作成 # 出力結果: [0, 2, 4, 6, 8] newList1 = [i for i in range(10) if i % 2 == 0] print(newList1) # 0~5, 10~14の整数リストを作成 # [0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 14] newList2 = [i for i in range(15) if i <= 5 or i => 10] print(newList2)
範囲をrange関数で指定し、さらにif文で条件を追加しています。
最後に、内包表現の応用で最初の、リストから偶数だけを取り出すプログラムをより簡潔に書く方法を見てみましょう。先ほどのnumList1から偶数だけのnumList2を作成するプログラムは下のように書くことができます。
それぞれの数が偶数かどうかを内包表現で書いてリストを作成しています。
# [6, 8, 4, 10, 14, 16, 86, 54] newList3 = [num for num in numList1 if num % 2 == 0] print(newList3)
最後にこのページで解説したfor文if文を使った演習問題をやってみましょう。
(答えはページの下にあります)
演習問題(for文、if文)
下のリストの要素番号とその要素を並べて出力せよ。
a = [1, 3, 5, 7, 9, 11] #求める出力結果 0 1 1 3 2 5 3 7 4 9 5 11
下のリストから7で割り切れない数値のみ縦に出力せよ。
nums = [4, 11, 14, 18, 25, 28, 70, 97, 105] # 求める出力結果 4 11 18 25 97
演習問題(内包表現)
40以上、80未満の7の倍数を要素とするリストを内包表現を用いて作成せよ。
まとめ
for文if文について十分に理解できたでしょうか。for文やif文は複雑な処理を書くためだけでなく、簡単な処理を短く書くためにも重要な文法なので是非マスターしてみてください。
実行から変数の作成についてはこちら→Python入門〜実行から変数(リスト型・辞書型)の作成まで
関数、ライブラリについてはこちら→Python入門〜関数とライブラリ〜
演習問題の答え(一例)
演習問題(for文、if文)
下のリストの要素番号とその要素を並べて出力せよ。
a = [1, 3, 5, 7, 9, 11] for i in range(len(a)): print(i, a[i])
下のリストから7で割り切れない数値のみ縦に出力せよ。
nums = [4, 11, 14, 18, 25, 28, 70, 97, 105] for i in nums: if i%7 != 0: print(i)
演習問題(内包表現)
40以上、80未満の7の倍数を要素とするリストを内包表現を用いて作成せよ。
l = [i for i in range(80) if i >= 40 and i < 80 and i%7 == 0]
Recommended