Pythonの繰り返し文の基礎 – 【Pythonではじめるプログラミング】

Pythonの繰り返し文の基礎 Python

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

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

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


2.ソースコードの表示

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

practice04.py

practice04.py


3.Python の繰り返し文について

① 繰り返し文を使う理由

コマンドプロンプト で practice04.py を実行します。
プログラムを実行する方法は、こちらの記事『ファイルに保存されたプログラムの実行』を参照します。
以下のように表示されます。

C:\Users\kotablog>python "C:\Python\practice04.py"
6

 
プログラムソースを確認します。

01 # -*- coding: utf-8 -*-
02 """
03 演習プログラム4
04 
05   繰り返し文の基礎
06 
07 """
08 import sys  # モジュールのインポート
09 
10 # 1から3までを足す
11 a = 1 + 2 + 3
12 print(a)
13 
14 #終了1
15 sys.exit()

11行目で 1 から 3 までを足して 変数a に代入しています。
12行目の print(a) で計算結果の 6 がコマンドプロンプトに表示されます。

次に、ソースコード #終了1 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

C:\Users\kotablog>python "C:\Python\practice04.py"
6
55

 
プログラムソースを確認します。

17 # 1から10までを足す
18 a = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
19 print(a)

18行目で 1 から 10 までを足して 変数a に代入しています。
19行目の print(a) で計算結果の 55 がコマンドプロンプトに表示されます。

さて、それでは 1 から 100 までを足すプログラムを作るとしたらどのようにしますか?
a = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14
もう 14 で飽きました.....
これを解決する方法が 「 繰り返し文 」 です。
 

② 繰り返し文の使い方

Pythonでは繰り返し文として、「 for文 」と「 while文 」があります。
ここでは、「 for文 」 を使って解説します。

Pythonの for文 の構文です。

for 変数名 in range(繰り返す範囲):
インデント 処理

プログラムソースを確認します。

24 # 1から100までを足す
25 a = 0
26 for i in range(1, 101):
27     a = a + i
28 print(a)

25行目では 変数a に 0 を代入しています。これは前回の計算結果である 55 が残っているためです。このような前段階の処理を 変数の初期化 と言います。
26行目が繰り返し文になります。今回は変数名には、「 i 」を使っています。
次は繰り返す範囲ですが 1, 101 になっています。100まで足すのなら 1, 100 では?と疑問になります。
Pythonでは、範囲の終わりは、マイナス1されてしまいます。なので 1, 100 にすると 1から99 までの足し算になります。
よって、100 まで足すのであれば 1, 101 にする必要があります。
「へんなルールだなぁ!?」と思われるかもしれませんが、このルールの方が便利に使えるのです。これについては、別途解説します。
27行目で 今の 変数a の値に 変数i の値を足し算して、変数a に代入しています。

繰り返しの動作を順を追って解説します。
一番最初の 変数a 0 です。
26行目の繰り返し文が始まると まず 変数i には 1 が代入されます。そして27行目で a = a(0) + i(1) になるので、変数a 1 です。
次の繰り返しは、変数i には 2 が代入されます。そして27行目で a = a(1) + i(2) になるので、変数a 3 です。
さらに繰り返しは続いて、
変数i には 3 が代入されます。そして27行目で a = a(3) + i(3) になるので、変数a 6 です。(1+2+3)
変数i には 4 が代入されます。そして27行目で a = a(6) + i(4) になるので、変数a 10 です。(1+2+3+4)
変数i には 5 が代入されます。そして27行目で a = a(10) + i(5) になるので、変数a 15 です。(1+2+3+4+5)
変数i には 6 が代入されます。そして27行目で a = a(15) + i(6) になるので、変数a 21 です。(1+2+3+4+5+6)
サイコロの目(1から6)を全部足すと 21 なので合っています。
このように 変数i 100 になるまで繰り返して足し続けることで、1から100までの計算ができます。

それでは、プログラムを実行します。
ソースコード #終了2 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のように表示されます。

C:\Users\kotablog>python "C:\Python\practice04.py"
6
55
5050

1 から 100 まで足すと答えは 5050 になります。
 

③ 繰り返し文の弱点

最後に繰り返し文の弱点を解説します。

繰り返しの回数が増えるに伴ってプログラムの処理に時間がかかります

実際に試してみます。1 から 1億まで足すといくつになりますか?

ソースコード #終了3 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。

わたしのパソコンでは、24秒かかって、
以下のように表示されました。

C:\Users\kotablog>python "C:\Python\practice04.py"
6
55
5050
5000000050000000

処理に時間がかかるのは困るので、ソースコードの該当する部分を次のように 3文字連続のダブルクォーテーション「 """ 」を使ってコメントにします。

33 # 1から1億までを足す
34 a = 0
35 """for i in range(1, 100000001):
36     a = a + i
37 print(a)"""

1からある数字までを足すには計算式があります。

ある数字( x ) と ある数字に 1 を足したもの( x + 1 )を 掛け算して、2 で割ります。
式にすると a = x × ( x + 1 ) ÷ 2 です。

プログラムソースを確認します。

39 #終了4
40 sys.exit()
41 
42 x = 100000000  # 1億
43 a = x * (x + 1) / 2
44 print(int(a))

43行目が計算式です。

プログラムを実行します。
ソースコード #終了4 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
 Ctrl  キーを押しながら、 S  キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3  キーを押して、 Enter  キーを押下します。
以下のようにすぐに表示されます。

C:\Users\kotablog>python "C:\Python\practice04.py"
6
55
5050
5000000050000000

繰り返し文の解説はいかがでしたか。
プログラミングでは繰り返し文は必ず必要になります。
但し、繰り返しの回数には注意してください。
 

<Pythonの条件分岐文の基礎 Pythonの繰り返し文の基礎 Pythonの関数の基礎>
タイトルとURLをコピーしました