forでループにもどるcontinueとループを抜けるbreakの使い方を紹介
forのconitnueとbreakの使い方
for文はpython以外のプログラミング言語にも存在する繰り返し処理です。
pythonでfor構文をつかって繰り返し処理をする方法 dict, list, JSON, csv rangeforの繰り返し処理の途中で「ある処理の場合は抜ける」としたい場合にはbreakやcontinueを使います。
- continue
- 以降の処理をスキップして次のループへ
- break
- forループを終了
実際の例です。
def main(): #3の倍数以外の数を表示する関数mainを定義
## 変数定義
sum_non3 = 0 #3の倍数以外の個数をカウントする変数
sum_continues = 0 #3の倍数の個数
sum = 0 #3の倍数以外の数の合計を計算する変数
## for文
for i in range(1, 101):
if i % 3 == 0: # 3の倍数のときcontinue
sum_continues += 1 #3の倍数の個数をカウント
continue # 3の倍数のときは処理をスキップして次のループに移る
if i == 50: # 50のとき
break # 50のときはbreakしてforループを抜ける
sum_non3 += 1 #49までの3の倍数以外の個数をカウント
sum += i #49までの3の倍数以外の数の合計を計算
print(f'49までの3の倍数以外の数の個数は{sum_non3}個です。')
print(f'3の倍数の数の個数は{sum_continues}個です。')
print(f'49までの3の倍数以外の数の合計は{sum}です。')
main()
実行結果
3の倍数以外の数の個数は33個です。
3の倍数の数の個数は16個です。
3の倍数以外の数の合計は817です。
continueとbreakを使った例
大量の名前と年収がのっているtest2.csvがあります。
> cat test2.csv
name,nensyu
Taro,10000000
saghgashira,6000000
suzukigawa,4800000
sannomiya,2300000
yamaghiwa,1800000
このcsvはnensyuの項目で降順に並び替えています。
年収が500万円以上人の人数を数えるプログラムを作成します。
import csv # csvモジュールをインポート
csv_file = open('test2.csv', 'r') #同じディレクトリにあるtest3.csvを開く
csv_reader = csv.DictReader(csv_file) #csvファイルを辞書型に変換
sum_500more_man = 0
for row in csv_reader: #csv_readerの中身をrowに代入
if int(row['nensyu']) >= 5000000: #nensyuの値が500万以上のとき
sum_500more_man += 1 #500万以上の年収の人の数をカウント
continue #500万以上の年収の人の数をカウントして次のループに移る
if int(row['nensyu']) < 5000000: #nensyuの値が500万未満のとき
break #forループを抜ける
print(f"年収が500万以上は{sum_500more_man}人です。")
実行結果
年収が500万以上は2人です。
このプログラムはbreakしなくても同じ結果が得られますが、すべてのnesyuの値をチェックする必要があります。
CSVのnensyuを降順で並び替えておくという前提ですが、500万未満の人は数えない(forループを抜ける)ことで計算量が少なくなるメリットがあります。