Pythonで「if」「for」「while」などの文を使ってみます。
if
if文は条件に一致する場合に処理を行います。
Pythonではブロックを{}で囲わず、インデントでブロックを表します。
name = 'はるか' if name == 'はるか': print('はるかです') elif name == 'かなた': print('かなたです') else: print('その他')
実行結果
はるかです
elifはelse ifを短くしたものになります。
A in BでAがBに含まれる場合、A not in BでAがBに含まれない場合になります。
members = ['はるか', 'かなた'] if 'はるか' in members: print('はるかな') if 'クレア' not in members: print('エクレア')
実行結果
はるかな エクレア
A is BでAとBが同じオブジェクトの場合、A is not BでAとBが同じオブジェクトでない場合になります。
membersA = ['はるか', 'かなた'] membersB = ['はるか', 'かなた'] if membersA is membersB: print('membersAとmembersBは同一IDです') membersC = membersA if membersA is membersC: print('membersAとmembersCは同一IDです')
実行結果
membersAとmembersCは同一IDです
条件A かつ 条件B のようにしたい場合、andを使います。
height = 151 if height > 150 and height < 170: print('かなたです') else: print('その他')
実行結果
かなたです
上記例の場合、以下のように条件文をまとめることもできます。
height = 151 if 150 < height < 170: print('かなたです') else: print('その他')
実行結果
かなたです
条件A または 条件B のようにしたい場合、orを使います。
name = 'はるか' if name == 'はるか' or name == 'かなた': print('はるかな') else: print('その他')
実行結果
はるかな
条件を反転させたい場合、notを使います。
height = 151 if not height < 170: print('その他') else: print('かなたです')
実行結果
かなたです
あまりないと思いますが注意点として、ブロック内で何も処理をしないとSyntaxErrorになります。
name = 'クレア' if name == 'はるか': print('はるかです') elif name == 'かなた': print('かなたです') else:
実行結果
SyntaxError: unexpected EOF while parsing
ブロック内で何も処理をしない場合、passを使います。
passは何も処理をしません。
name = 'クレア' if name == 'はるか': print('はるかです') elif name == 'かなた': print('かなたです') else: pass
結果はなにも出力されません。
for
for文はリストなどのデータを使って繰り返し処理を行います。
members = ['はるか', 'かなた', 'クレア', 'エミリ'] for member in members: print(member)
実行結果
はるか かなた クレア エミリ
membersの値を順々に出力しました。
カウントダウンやカウントアップのように、一連の数値で繰り返し処理をする場合はrange()が便利です。
引数が1つの場合、0から始まって引数の値の個数だけ値を生成します。
for i in range(3): print(i)
実行結果
0 1 2
値は0始まりで3つの値を生成しました。
引数が2つの場合は開始値と終了位置になります。
for i in range(2, 5): print(i)
実行結果
2 3 4
第3引数を指定するとステップになります。
for i in range(0, 10, 4): print(i)
実行結果
0 4 8
ステップをマイナスにすることでカウントダウンもできます。
for i in range(3, -1, -1): print(i)
実行結果
3 2 1 0
リストとインデックス番号を合わせて繰り返し処理をしたい場合、range()とlen()を合わせて実現できます。
members = ['はるか', 'かなた', 'クレア', 'エミリ'] for i in range(len(members)): print(i, members[i])
実行結果
0 はるか 1 かなた 2 クレア 3 エミリ
リストの個数をlen()で取得して、その値をrange()の引数に渡しています。
もしくはenumerate()を使うことでも実現できます。
members = ['はるか', 'かなた', 'クレア', 'エミリ'] for i, member in enumerate(members): print(i, member)
実行結果
0 はるか 1 かなた 2 クレア 3 エミリ
辞書型のキーと値を使って繰り返し処理をしたい場合、items()メソッドを使います。
member = {'name': 'はるか', 'height': 172} for key, val in member.items(): print(key, val)
実行結果
name はるか height 172
複数のリストから要素を順々に取り出したい場合、zip()関数を使います。
members = ['はるか', 'かなた', 'クレア', 'エミリ'] heights = [172, 151, 171, 168] for member, height in zip(members, heights): print(member, height)
実行結果
はるか 172 かなた 151 クレア 171 エミリ 168
リストの要素数が異なる場合、一番少ないリストが終了した時点で止まります。
members = ['はるか', 'かなた', 'クレア', 'エミリ', 'なるみ', 'あやさ'] heights = [172, 151, 171, 168] for member, height in zip(members, heights): print(member, height)
実行結果
はるか 172 かなた 151 クレア 171 エミリ 168
3つ以上のリストでも可能です。
members = ['はるか', 'かなた', 'クレア', 'エミリ', 'なるみ', 'あやさ'] heights = [172, 151, 171, 168] cvs = ['優木かな', '宮下早紀', '種﨑敦美', '末柄里恵', '島袋美由利', '伊藤かな恵'] for member, height, cv in zip(members, heights, cvs): print(member, height, cv)
実行結果
はるか 172 優木かな かなた 151 宮下早紀 クレア 171 種﨑敦美 エミリ 168 末柄里恵
繰り返し処理にはcontinueとbreak、elseが使えます。
continueはループを先頭に戻す、breakはループを終了する、elseはループ完了後の処理を記述することができます。
members = ['はるか', 'かなた', 'クレア', 'エミリ', 'なるみ', 'あやさ'] for member in members: if member == 'かなた': continue elif member == 'なるみ': break print(member) else: print('完了')
実行結果
はるか クレア エミリ
この例の場合、breakで処理が終了しているのでelseの処理が実行されませんでした。
breakやcontinueを外して試してみます。
members = ['はるか', 'かなた', 'クレア', 'エミリ'] for member in members: print(member) else: print('完了')
実行結果
はるか かなた クレア エミリ 完了
forの処理完了後にelse内の処理が実行されることが確認できました。
while
while文は条件に一致している間だけ繰り返し処理を行います。
num = 0 while num < 3: print(num) num+=1
実行結果
0 1 2
for文と同様にcontinueとbreak、elseが使えます。
num = 0 while num < 5: num+=1 if num == 2: continue elif num == 4: break print(num) else: print('完了')
実行結果
1 3
continueとbreakを外して試してみます。
num = 0 while num < 5: print(num) num+=1 else: print('完了')
実行結果
0 1 2 3 4 完了
whileの処理完了後にelse内の処理が実行されることが確認できました。
【参考サイト】
- 4. More Control Flow Tools — Python 3.7.0 documentation
- 5. Data Structures — Python 3.7.0 documentation
コメントが承認されるまで時間がかかります。