Pythonでの「if」「for」「while」の使い方

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内の処理が実行されることが確認できました。
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930