繰り返し文(for文、while文) – 【Pythonプログラミング1 ~基礎編~】

PROGRAMMING

Pythonの繰り返し文(for文、while文)を、演習用プログラムのソースコードを使い、それを実行しながら解説します。

1.演習用プログラムのダウンロード

演習用プログラム( practice11.py )をダウンロードします。
ダウンロードファイルは テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更します。
practice11.py を Python をインストールしたフォルダ(今回は C:\Python)に置きます。


2.ソースコードの表示

メモ帳を使って、演習用プログラム( practice11.py )を開きます。

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関数を使用)

for 変数名 in 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文 の構文(イテラブルを使用)

for 変数名 in イテラブル:
インデント 繰り返しおこなう処理

ここでは、イテラブルは、複数の値を扱うデータ型(リスト、タプル、辞書)として学習を進めます。
イテラブルの要素が順次変数に格納されて繰り返されます。


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 条件 :
インデント 繰り返しおこなう処理

条件を満たさなくなったら繰り返しを終了します。

① 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文) 例外処理>
タイトルとURLをコピーしました