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
コメントが承認されるまで時間がかかります。