コンテンツ
繰り返し処理とは?
例えば
「1から100までの数字を足し算して、総和を求める」
といった場合を考えてみます。
1 + 2 + 3 + 4 + 5 +・・・
ですが、これを分解してみると
1 + (1 + 1) + (2 + 1) + (3 + 1) + (4 + 1) + ・・・・
となり、1に1を足して2,2に1を足して3,・・・のように、足し算した結果に1を足すという規則性がある処理の繰り返しです。
そのため、規則性がある処理を行う場合は、繰り返し処理を使ったほうが便利です。
Pythonでは、繰り返し処理を行うために、forとwhileというプログラム書式が用意されています。
rangeオブジェクトについて
forの繰り返しの中で登場する「range」について説明します。
rangeは、以下の書式で整数の列を扱います。
書式
range(number)
扱うデータ:0以上number未満の整数
range(number1, number2)
扱うデータ:number1以上number2未満の整数
range(number1, number2, , number3)
扱うデータ:number1以上number2未満の公差number3の整数
rangeのサンプルで具体的にどのような扱いになるか確認します。
以下のrangeは右側に記載したリスト型と同じ意味になります。
range(5) → [0, 1, 2, 3, 4]
range(8) → [0, 1, 2, 3, 4, 5, 6, 7]
range(3, 6) → [3, 4, 5]
range(6, 10) → [6, 7, 8, 9]
range(2, 9, 2) → [2, 4, 6, 8]
range(0, 9, 3) → [0, 3, 6]
これをプログラムで同じ意味になっているかどうかを確認してみます。
pyコマンドで入力モードにして確認します。
number = range(5)
list(number)
number = range(8)
list(number)
number = range(3, 6)
list(number)
number = range(6, 10)
list(number)
number = range(2, 9, 2)
list(number)
number = range(0, 9, 3)
list(number)
<実行結果>
>>> number = range(5)
>>> list(number)
[0, 1, 2, 3, 4]
>>> number = range(8)
>>> list(number)
[0, 1, 2, 3, 4, 5, 6, 7]
>>> number = range(3, 6)
>>> list(number)
[3, 4, 5]
>>> number = range(6, 10)
>>> list(number)
[6, 7, 8, 9]
>>> number = range(2, 9, 2)
>>> list(number)
[2, 4, 6, 8]
>>> number = range(0, 9, 3)
>>> list(number)
[0, 3, 6]
rangeで定義した値とリストで出力する結果が同じになりました。
繰り返しでは、rangeを使いますので使い方を覚えましょう。
forによる繰り返し処理(数値型)
書式
for 変数 in range(繰り返しを行う数):
繰り返し行う処理
[繰り返し行う処理]の前には、
必ず「空白のスペース/インデント」を入れます。
これは1章で説明した「インデント」を入れる
特殊なルールがあると説明したものの一つです。
変数に、number
繰り返しを行う数を5
とした場合に、どうなるかサンプルプログラムで出力結果を確認してみましょう。
<サンプルプログラム>
for number in range(5):
print(number)
<出力結果>
0
1
2
3
4
forの処理について説明します。
numberは数値が入る変数です。
このnumberという変数に対して、処理を5回繰り返すようになっています。
in range(5)
という処理では、
0, 1, 2, 3, 4というように、
0から1ずつ足した数をnumberに代入しています。
そして、5回分実施したあとに繰り返しが終了になっています。
ではもう1つ掛け算を行うサンプルプログラムを確認してみます。
<サンプルプログラム>
for number in range(7):
print(number * number)
<出力結果>
0
1
4
9
16
25
36
今度は、numberの変数同士の掛け算を実施した結果を出力するプログラムです。
0 x 0
1 x 1
2 x 2
3 x 3
4 x 4
5 x 5
6 x 6
を実施した7回分の計算結果が出力されました。
forによる繰り返し処理(文字列型)
forを使って、数値型以外の文字列型も繰り返すことができます。
今回は、文字列を使った場合について確認します。
数値型以外はデータ型すべて共通で、
書式は次のようになります。
書式
for 変数 in データ:
データを使って繰り返し行う処理
ではサンプルプログラムで文字列の繰り返しについて確認してみます。
<サンプルプログラム>
for str in ("sample"):
print(str)
<出力結果>
s
a
m
p
l
e
文字列”sample”を繰り返しのデータとしました。
この場合、変数strには、”sample”の1文字ずつが代入され、
s, a , m , p , l , e
で1文字ずつすべて出力されるまで実行されました。
文字列を繰り返し処理にした場合は、1文字ずつに分解されます。
forによる繰り返し処理(リスト型)
次にリスト型の繰り返しについて確認します。
書式は文字列型と同じデータ型です。
書式
for 変数 in データ:
データを使って繰り返し行う処理
リスト型は、
“[a, b, c, ・・・ ]”
となるような型です。
3章で説明をしています。
サンプルプログラムでどのようなプログラムになるか確認します。
<サンプルプログラム>
for strlist in ["orange", "apple", "grape", "peach"]:
print(strlist)
<出力結果>
orange
apple
grape
peach
forによる繰り返し処理(辞書型)
辞書型の繰り返しについて確認します。
書式は、データ型と同じになります。
書式
for 変数 in データ:
データを使って繰り返し行う処理
辞書型は
{見出し1:見出し1のデータ, 見出し2:見出し2のデータ, ・・・}
となるような型です。
3章で説明をしています。
サンプルプログラムでどのようなプログラムになるか確認します。
<サンプルプログラム>
fruit = {"orange":100, "apple":200, "grape":300, "peach":400}
for strdic in fruit:
print(strdic)
print(fruit[strdic] + 50)
fruitは果物の辞書型になっています。
果物に50円を足した結果を出力するようにしています。
<出力結果>
orange
150
apple
250
grape
350
peach
450