Python | ループ処理 (for文, while文)

2021年5月22日

公開日:2021/5/22

Pythonでは,特定の処理を繰り返すループ処理を利用することができる.以下に「ループ処理の基本」と「ループ処理に役立つ関数」について説明する.

◆実施環境

Python 3.8.8

  1. ループ処理の基本

以下に「for文によるループ処理」,「while文によるループ処理」,「continue, break, elseを使ったループ処理」について説明する.

■for文によるループ処理

# 1の処理(0から4までを出力)
for i in range(5):
  print(i)

# 2の処理('ab'を4回繰り返し出力)
for _ in range(4):
  print('ab')

# 3の処理(1から7の範囲で,1に2を加算して出力)
for i in range(1,8,2):
  print(i)

# 4の処理(リストである'menu'の中の値を順番に出力)
menu = ['bread','rice','soba','pasta']
for food in menu:
  print(food)

# 5の処理(辞書である'musician'の中のキーと値を順番に出力)
musician = {
  'Name':'Bach',
  'Age':'50',
  'Country':'Germany'
}
for info in musician:
  print(info, musician.get(info))

# 6の処理(単語から文字を1つずつ出力)
for i in 'tea':
  print(i)

■実行結果

# 1の結果
0
1
2
3
4

# 2の結果
ab
ab
ab
ab

# 3の結果
1
3
5
7

# 4の結果
bread
rice
soba
pasta

# 5の結果
Name Bach
Age 50
Country Germany

# 6の結果
t
e
a

■while文によるループ処理

i = 0
while i < 4:
  print(i)
  i += 1

■実行結果

0
1
2
3

■continue, break, elseを使ったループ処理

ループ制御をする以下命令文を用いたループ処理を作成する.

continue: 特定の処理を止め,次の処理に続く
break: 特定の処理を止め,次の処理も止める
else: ループ処理の後に実行される

# 1の処理(for文でのcontinue: 2がスキップ) 
for i in range(4): 
  if i == 2: 
    continue 
  print(i) 

# 2の処理(while文でのcontinue: 2がスキップ)
i = 0 
while i < 4: 
  if i == 2: 
    i += 1 
    continue 
  print(i) 
  i += 1

# 3の処理(for文でのbreak: 3で処理が止まる)
for i in range(10):
  if i == 3:
    break
  print(i)

# 4の処理(while文でのbreak: 2で処理が止まる)
i = 0
while i < 8:
  if i == 2:
    break
  print(i)
  i += 1

# 5の処理(for文でのelse: 2まで出力しelseに移行)
for i in range(3):
  print(i)
else:
  print('終了')

# 6の処理(for文 continue + else: elseに処理が進む)
for i in range(4):
  if i == 2:
    continue
  print(i)
else:
  print('終了')

# 7の処理(for文 continue + else: elseに処理が進まない)
for i in range(10):
  if i == 3:
    break
  print(i)
else:
  print('終了')

■実行結果

# 1の結果
0
1
3

# 2の結果
0
1
3

# 3の結果
0
1
2

# 4の結果
0
1

# 5の結果
0
1
2
終了

# 6の結果
0
1
3
終了

# 7の結果
0
1
2

 

  1. ループ処理に役立つ関数

ループ処理に役立つ関数(enumerate, zip)の説明をする

■enumerate
リストやタプル,セット内のインデックスと値を返す.”enumerate(リスト名, 最初のインデックス値)”を利用する.最初のインデックス値は任意.記載がなければインデックス値は"0″から始まる.

# 1の処理(リスト)
menu = ['bread','rice','soba','pasta'] 
for i, v in enumerate(menu): 
  print(i,v)

# 2の処理(タプル)
menu = ('bread','rice','soba','pasta')
for i, v in enumerate(menu,2):
  print(i,v)

■実行結果

# 1の結果
0 bread 
1 rice 
2 soba 
3 pasta

# 2の結果
2 bread
3 rice
4 soba
5 pasta

■zip
複数のリストやタプル,セット内の値を返す.”zip(リスト名1, リスト名2)”を利用する.

menu = ['bread','rice','soba','pasta'] 
drink = ['water','tea','coffee','juice'] 
for h, i in zip(menu,drink): 
  print(f'menuの値:{h}') 
  print(f'drinkの値:{i}')

■実行結果

menuの値:bread 
drinkの値:water 
menuの値:rice 
drinkの値:tea 
menuの値:soba 
drinkの値:coffee 
menuの値:pasta 
drinkの値:juice

以上