Pythonの繰り返し文(for文、while文)を、演習用プログラムのソースコードを使い、それを実行しながら解説します。
1.演習用プログラムのダウンロード
演習用プログラム( practice11.py )をダウンロードします。
ダウンロードファイルは テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更します。
practice11.py を Python をインストールしたフォルダ(今回は C:\Python)に置きます。
2.ソースコードの表示
メモ帳を使って、演習用プログラム( practice11.py )を開きます。

practice11.py
3.繰り返し文(for文)
① range関数を使ったfor文
コマンドプロンプト で practice11.py を実行します。
プログラムを実行する方法は、こちらの記事『ファイルに保存されたプログラムの実行』を参照します。
以下のように表示されます。
C:\Users\kotablog>python "C:\Python\practice11.py" *** range関数を使ったfor文 *** 2 4 6 8 10
for文 の構文(range関数を使用)
インデント 繰り返しおこなう処理
関数 range() について
range(stop) ※1
range(start, stop) ※2
range(start, stop, step)
start に指定した数値から順に step に指定した数値だけ足していき、 stop に指定した数値未満の範囲まで(すなわち stop-1)の連続した数値を作成します。
※1 start を省略したときは 0 が指定されたものとみなされます。
※2 step を省略したときは 1 が指定されたものとみなされます。
range(5)
--> 0, 1, 2, 3, 4
range(1, 4)
--> 1, 2 ,3
range(2, 11, 2)
--> 2, 4, 6, 8, 10
プログラムソースを確認します。
01 # -*- coding: utf-8 -*-
02 """
03 演習プログラム11
04
05 繰り返し文(for文、while文)
06
07 """
08 import sys # モジュールのインポート
09
10 # range関数を使ったfor文
11 print("\n*** range関数を使ったfor文 ***")
12 for i in range(2, 11, 2):
13 print(i)
14
15 #終了1
16 sys.exit()
② break と continue
ソースコード #終了1 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
Ctrl キーを押しながら、 S キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3 キーを押して、 Enter キーを押下します。
以下のように表示されます。
*** breakでfor文のループを中断する *** 0 1 2 *** continueで処理をスキップする *** 0 1 2 4 5
break
それ以降の処理を行わず、繰り返しが終了します。
continue
それ以降の処理を行わず、繰り返しの先頭に戻ります。
18 print("\n*** breakでfor文のループを中断する ***")
19 for i in range(6):
20 if i == 3:
21 break
22 print(i)
23
24 print("\n*** continueで処理をスキップする ***")
25 for i in range(6):
26 if i == 3:
27 continue
28 print(i)
21行目の break で、繰り返しが終了するので、出力は 2 までとなります。
27行目の continue で、繰り返しの先頭に戻るので、3 は出力されません。
③ イテラブルを使ったfor文
ソースコード #終了2 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
Ctrl キーを押しながら、 S キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3 キーを押して、 Enter キーを押下します。
以下のように表示されます。
*** イテラブルを使ったfor文(リスト) *** 札幌 東京 名古屋 大阪 福岡 *** イテラブルを使ったfor文(タプル) *** 札幌 東京 名古屋 大阪 福岡 *** イテラブルを使ったfor文(辞書) *** 東京: 9821798 名古屋: 2296000 *** 文字列をイテラブルとして扱う *** こ ん に ち は
for文 の構文(イテラブルを使用)
インデント 繰り返しおこなう処理
ここでは、イテラブルは、複数の値を扱うデータ型(リスト、タプル、辞書)として学習を進めます。
イテラブルの要素が順次変数に格納されて繰り返されます。
33 # イテラブルを使ったfor文
34 print("\n*** イテラブルを使ったfor文(リスト) ***")
35 list1 = ['札幌', '東京', '名古屋', '大阪', '福岡'] # リストを用意
36 for value in list1:
37 print(value)
38
39 print("")
40
41 print("\n*** イテラブルを使ったfor文(タプル) ***")
42 tuple1 = ('札幌', '東京', '名古屋', '大阪', '福岡') # タプルを用意
43 for value in tuple1:
44 print(value)
45
46 print("")
47
48 print("\n*** イテラブルを使ったfor文(辞書) ***")
49 dict1 = {'東京' : 9821798, '名古屋' : 2296000} # 辞書を用意
50 for strPlace, intPop in dict1.items():
51 print(f'{strPlace}: {intPop}')
52
53 print("")
54
55 print("\n*** 文字列をイテラブルとして扱う ***")
56 strWork = "こんにちは"
57 for value in strWork:
58 print(value)
59
60 #終了3
61 sys.exit()
57行目、文字列をイテラブルとして扱ってループすることもできます。
④ リストからrange関数を使って要素を取り出す
ソースコード #終了3 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
Ctrl キーを押しながら、 S キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3 キーを押して、 Enter キーを押下します。
以下のように表示されます。
*** リストからrange関数を使って要素を取り出す *** 札幌 東京 名古屋 大阪 福岡 *** インデックスを使った要素の取り出しが可能です① *** 札幌 名古屋 福岡 *** インデックスを使った要素の取り出しが可能です② *** 札幌 東京 福岡
range関数を使うことによって、インデックスを使った処理が可能になります。
63 # リストからrange関数を使って要素を取り出す
64 print("\n*** リストからrange関数を使って要素を取り出す ***")
65 for i in range(len(list1)):
66 print(list1[i])
67
68 print("\n*** インデックスを使った要素の取り出しが可能です① ***")
69 for i in range(0, len(list1), 2):
70 print(list1[i])
71
72 print("\n*** インデックスを使った要素の取り出しが可能です② ***")
73 for i in range(len(list1)):
74 if i == 2 or i == 3:
75 continue
76 print(list1[i])
77
78 #終了4
79 sys.exit()
69行目で、要素を取り出す範囲をインデックスで指定しています。
74行目と75行目で、インデックス毎の処理をしています。
4.繰り返し文(while文)
while文 の構文
インデント 繰り返しおこなう処理
条件を満たさなくなったら繰り返しを終了します。
① while文を使う
ソースコード #終了4 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
Ctrl キーを押しながら、 S キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3 キーを押して、 Enter キーを押下します。
以下のように表示されます。
*** while文 *** こんにちは 1回目 こんにちは 2回目 こんにちは 3回目 こんにちは 4回目 こんにちは 5回目
81 # 5回処理を繰り返したい場合
82 print("\n*** while文 ***")
83 i = 1
84 while i < 6:
85 print("こんにちは " + str(i) + "回目")
86 i += 1
83行目で、変数i に 1 をセット
84行目の、while文 の繰り返しの条件は、6 未満
86行目で、変数i を 1 カウントアップ。
この処理を忘れると、繰り返しが無限に続きますので注意が必要です。
② break と continue
ソースコード #終了5 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
Ctrl キーを押しながら、 S キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3 キーを押して、 Enter キーを押下します。
以下のように表示されます。
*** breakでwhile文のループを中断する *** ['札幌', '東京', '名古屋', '大阪', '福岡'] 名古屋が見つかったら処理を中断する 札幌 東京 名古屋 *** continueで処理をスキップする *** ['札幌', '東京', '名古屋', '大阪', '福岡', '鹿児島'] 2文字以下の地名を抽出する 札幌 東京 大阪 福岡
for文と同様に、while文でも break と continue が使えます。
91 print("\n*** breakでwhile文のループを中断する ***")
92 list1 = ['札幌', '東京', '名古屋', '大阪', '福岡']
93 print(list1)
94 print("名古屋が見つかったら処理を中断する")
95 i = 0
96 while i < len(list1):
97 print(list1[i])
98 if list1[i] == "名古屋":
99 break
100 i += 1
101
102 print("\n*** continueで処理をスキップする ***")
103 list2 = ['札幌', '東京', '名古屋', '大阪', '福岡', '鹿児島']
104 print(list2)
105 print("2文字以下の地名を抽出する")
106 i = 0
107 while i < len(list2):
108 if len(list2[i]) > 2: # 文字数が2文字以上の場合はスキップする
109 i += 1
110 continue
111 print(list2[i])
112 i += 1
113
114 #終了6
115 sys.exit()
98行目で、リストの要素に 名古屋 が見つかれば、99行目で、繰り返しを終了しています・
108行目で、リストの要素の文字数が2文字以上であれば、110行目で、繰り返しの先頭に戻っています。
演習問題
ソースコード #終了6 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
Ctrl キーを押しながら、 S キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3 キーを押して、 Enter キーを押下します。
以下のように表示されます。
【演習問題1】3文字以上の地名を抽出してください ['札幌', '東京', '名古屋', '大阪', '福岡', '鹿児島'] 札幌 東京 大阪 福岡
【演習問題1】3文字以上の地名を抽出してください
以下の結果となるように、122行目のコーディングを変更してください
結果:
名古屋
鹿児島
117 print("\n【演習問題1】3文字以上の地名を抽出してください")
118 list2 = ['札幌', '東京', '名古屋', '大阪', '福岡', '鹿児島']
119 print(list2)
120 i = 0
121 while i < len(list2):
122 if len(list2[i]) > 2: # ここの条件を変えてください
123 i += 1
124 continue
125 print(list2[i])
126 i += 1
127
128 sys.exit()
<フォルダ名とファイル名の操作 | 繰り返し文(for文、while文) | 例外処理> |