Chatpter.1 - 繰り返し文の役割
繰り返し文の役割
文 - プログラムの一部を、希望の回数分だけ繰り返してくれます。
文 - 「もういいよ」と言われるまで、ずっと繰り返します。
文と同じで、インデントを使います。
文は、色々な使い方が出来てとても便利です。
文は、とくに繰り返してほしい回数が決まっていない場合に威力を発揮します。
- 繰り返しのことを「ループ」とも言います。
手抜きのスペシャリストになれます👍
文 - プログラムの一部を、希望の回数分だけ繰り返してくれます。
文 - 「もういいよ」と言われるまで、ずっと繰り返します。
文と同じで、インデントを使います。
文は、色々な使い方が出来てとても便利です。
文は、とくに繰り返してほしい回数が決まっていない場合に威力を発揮します。
文は、使い方はとても簡単なのですが、その仕組みは少し難しいです。
for 変数 in 繰り返してほしい回数:
繰り返してほしいプログラム
for i in range(5):
print(i)
0
1
2
3
4
言葉で説明するより、実際の流れを見ていただいた方が早いかと。(ちょっと長いです)
for i in range(5):
print(i)
for i in [0, 1, 2, 3, 4]: # range(5)がこんな風に化ける
print(i)
for 0 in [0, 1, 2, 3, 4]: # 最初の 0 が i に代入される
print(0) # '0' が出力される
0
for 1 in [0, 1, 2, 3, 4]: # 次に 1 が i に代入される
print(1) # '1' が出力される
1
for 2 in [0, 1, 2, 3, 4]: # 次に 2 が i に代入される
print(2) # '2' が出力される
2
for 3 in [0, 1, 2, 3, 4]: # 次に 3 が i に代入される
print(3) # '3' が出力される
3
for 4 in [0, 1, 2, 3, 4]: # 次に 4 が i に代入される
print(4) # '4' が出力される
4
「なんで range(5) なのに 5 で終わらないの?」・・・説明しよう!
range({スタートの数,} ストップする数{, ステップする数})
{} の部分は省略できる。
スタートの数を省略すると 0 になる。
ステップする数を省略すると 1 になる。
ステップは「いくつ跳びにする」ということです。
つまり
range(ストップする数)
range(5) # ストップする数は 5
↓
[0, 1, 2, 3, 4]
0 ~ 4 まで数えて、 5 になったからストップして、代入するのをやめたのです。
「代入するのをやめた」ということは、そこで「繰り返すのをやめた」ということです。
「繰り返すのをやめた」ということで、この時点でこの 文は終了します。
おつかれさまでした。💤🛌
range は「範囲」という意味です。
スタートの数は、通常 0
から 始まります。
[ ]
の中の数がいくつあるか数えてみてください。全部で5個ありますね。
なので、単純に5回繰り返したい場合は range(5)
とすればよいのです。それだけなのです。
1
から 5
にしたいときは range(1, 6)
と書きます。ややこしいですね。
文の説明より range() の説明のほうが長かったですね。
i
という変数は、文でよく使われるお決まりの変数です。
かれこれ50年以上 家に仕える、ベテラン変数です。
j
もそうです。i
と j
は 文専用の変数と考えてもいいくらいです。
i
の変数は、無理に使わなくても大丈夫です。
「最初にしるべき4つのこと」の時に紹介した繰り返し文のプログラム、
for i in range(5):
print('Hello world!')
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!
こんな感じで i
をスルーしても全く問題ありません。
むしろ必要無くて使わないということも、しょっちゅうありますから。
文は for文とは反対に、仕組みはシンプルなのですが、取扱注意な構文です。
文の仕組みは、こんな感じです。
while 値 または 条件式:
繰り返してほしいプログラム
値とは True
のことです。
条件式とは、文で使った a == 3
みたいなアレです。
もし a = 3
の時、a == 3
が化けて、True
になりますね。
『条件式の結果が True の間、
繰り返してほしいプログラムをずっと繰り返す』のが
文の特徴となります。
なので、安易にこんなことをしてはいけません。
while True:
繰り返してほしいプログラム
やめたくてもやめられなくなり、猫生詰みます。🙀
これを「無限ループ」と言います。
文は、こんな感じの見た目になります。
cnt = 0 # 最初 cnt の値を 0 にする
while cnt < 5:
print(cnt)
cnt += 1 # cnt の値に 1 を足す。(重要!)
0
1
2
3
4
cnt < 5
の所がとても重要です。ここで while
をコントロールしています。
cnt
の値が 5
未満の間、ずっと繰り返すという意味になります。
for文と違う点は次のとおりです。
for文は、繰り返す回数が決まっているので勝手に止まってくれます。
文の繰り返しは、意識して止めなければなりません。
なので、
中で cnt += 1
を書いて cnt
を 1
ずつ足していかないと、
いつまでも cnt
が 0
のままで止まらなくなってしまいます。
そういう意味で「取扱注意」なのです。
繰り返し文の中に繰り返し文を書くというウルトラテクニックです。トラもネコ科。
銀の〇プーンにCIA〇ちゅ~〇がのっかってる感じ。幸せの相乗効果!
簡単なようで意外に悩ましい。これが使えるようになったら大人猫!
これが多重ループです。
# 二重ループ
for i in range(3):
for j in range(3):
print('i =', i, 'j =', j) # カンマで区切ると strに変換しなくて済む
i = 0 j = 0
i = 0 j = 1
i = 0 j = 2
i = 1 j = 0
i = 1 j = 1
i = 1 j = 2
i = 2 j = 0
i = 2 j = 1
i = 2 j = 2
よ~~く見てみると、説明無しでもわかると思います。
最初の for i in range(3):
の繰り返しの中に for j in range(3):
が入っています。
j のほうを先に繰り返して、それが終わったら i に戻って、また j を繰り返してという流れになります。
簡単にいうと、 j を i 回繰り返します。
j × i = 3 × 3 = 9 。つまり、print() が合計9回繰り返されました。
気を付けてくださいね。100万回を100万回繰り返したら、とんでもないことになります。🙀
他にこんな使い方もできます。いつか使うかもしれません。
# 三重ループ
n = 0
for i in range(3):
for j in range(5):
for k in range(10):
n += i + j + k
print(n)
1125
# while文の中にfor文
n = 0
while n <= 100:
for i in range(8):
n += i
print(n)
28
56
84
112
「ブレイク」と読みます。
無条件で強制的に、今の繰り返しをやめさせる絶対権限を持っています。狂暴です。😾
繰り返しを止めたいところに break
と書くだけで止まります。ブレーキです。(breaking)
お友達に continue
(気が利く) がいますが、この子の紹介はまたいずれ。
こんな感じで使われます。
cnt = 0
while True:
if cnt == 100: # ♪ 100 になったら
break # ♪ スグ 抜ける~
cnt += 1
print(cnt)
100
cnt
の値が 100
になったら break
して 文を強制終了します。
一般的に繰り返し文を終えることを「ループを抜ける」といいます。
break
しなくても、 や で正しく終了した場合でも「ループを抜ける」と言います。
ちなみに break
を使わないで書くとこうなります。
cnt = 0
while cnt < 100:
cnt += 1
print(cnt)
100
シンプルになりましたね。
プログラムの読みやすさのことを「可読性」と言います。
プログラムの世界も Simple is best. なんです。
ついでに 文で書くとこうなります。
cnt = 0
for i in range(100):
cnt += 1
print(cnt)
100
100 まで!って決まっているなら 文のほうがいいですね。😽