Pythonのループ処理(for文とwhile文の基本的な使い方、breakやelseで終了する方法)
Pythonでくりかえしの処理は最もよく使われます。
a = [3, 6, 9, 12, 15]
print(a[0])
print(a[1])
print(a[2])
print(a[3])
print(a[4])
出力:
3
6
9
12
15
しかしリストの要素がたくさん増えたとき、print(a[3])などといちいち書くことは大変です。そこで次のように書きます。
a = [3, 6, 9, 12, 15]
for x in a:
print(x)
出力:
3
6
9
12
15
for x in a:はaというリストから順に値を取りだすという意味です。リストから取りだした値は一時的にxに入れています。
問題
「りんご」「みかん」「いちご」を出力するプログラムがつくりなさい。
解答
a = ['りんご', 'みかん', 'いちご']
for x in a:
print(x)
出力:
りんご
みかん
いちご
Pythonのforループをbreakで抜ける
Pythonのforループを抜けるにはbreakを使います。
for x in range(7):
if 2 < x:
break
print(x)
出力:
0
1
2
forループは0から6まで処理し、xは0から1ずつ増えます。ループする中で、xが2より大きくなったらループが終わります。
問題
「りんご」「みかん」「いちご」「メロン」「バナナ」というリストの要素を順番に、メロンが出てくるまで表示してください。
解答
a = ['りんご', 'みかん', 'いちご', 'メロン', 'バナナ']
for x in a:
print(x)
if x == 'メロン':
break
出力:
りんご
みかん
いちご
メロン
forとelse
前回までPythonのfor文を学びました。今回はforが終了したときの処理を紹介します。
a = ['りんご', 'みかん', 'いちご']
for x in a:
print(x)
else:
print('処理は終わりました')
出力:
りんご
みかん
いちご
処理は終わりました
他のプログラミング言語と少し異なるところはelseをforにつけられるところです。上のプログラムではforループでprint(x)がすべて実行された後、print('処理は終わりました')を処理しています。ループ処理が終わったかどうかをelseで確認できるでしょう。
range
Pythonに限らず、プログラミングでは同じ処理をくりかえし行う場面はよく出てきます。例えば「処理します」という文字を5回出すコードは次のようになります。
for x in range(5):
print('処理します')
出力:
処理します
処理します
処理します
処理します
処理します
rangeはリストではありませんが、0から4までの5つの要素を持つ並びでした。forはrangeをリストのように扱い、上のプログラムではforループの中でxという一時的な変数を用意し、そこにrangeの要素を入れていきます。
次のコードを見てください。
for x in range(5):
print(x)
出力:
0
1
2
3
4
問題
5から11までの7個を出力するプログラムをつくりなさい。
解答
for x in range(5, 12):
print(x)
出力:
5
6
7
8
9
10
11
while
これまでPythonのfor文を学びました。forループは基本的に、リストから要素を取りだしながら処理を行ないます。今回はもう一つのループ処理であるwhileを解説します。
x = 0
while x < 5:
x = x + 1
print(x)
出力:
1
2
3
4
5
解説
最初にxに0を入れて、whileのループでxを1ずつ加算します。つまりxはループを重ねるごとに変化します。
ループの終わりはwhileの隣にあるx<5という条件が偽になるまでです。つまりループ処理は条件が満たされるときにかぎり、際限なく実行されます。
注意
whileは一般的に危険な文法と考えられています。プログラミングを初めて勉強するという方は、単にループ処理を行ないたいときはwhileでなくforを使いましょう。
例えば次のコードは危険なコードです。
x = 0
while x < 5:
print(x)
このコードは次のように無限に処理します。
0
0
0
0
0
0
0
0
0
…
実際は0が無限に続き、プログラムはコンピューターのCPUとメモリを極限まで使います。このプログラムではx<5という条件がいつまでも真であることに原因があります。最初の例ではxが1ずつ増えるため、ループのどこかで条件が満たされなくなります。
whileとelse
Pythonのwhileはforと同じようにelseで終了時のプログラムを実行できます。
x = 0
while x < 5:
x = x + 1
print(x)
else:
print('処理が終わりました')
出力:
1
2
3
4
5
処理が終わりました
解説
最初にxに0を入れて、whileのループでxを1ずつ加算します。xはループを重ねるごとに変化します。ループの終わりはx<5という条件が偽になるまでです。そしてループが終わるとelseの処理(ここでは「処理が終わりました」というメッセージを表示する)が行われます。
文法(if・forなど)
-
Pythonのif文(もし〜ならば)0943
-
Pythonのif文と比較演算子(等しい、大きい、以上など)018074
-
Pythonの条件分岐(if…else文)0642
-
Pythonの条件分岐(else ifはelifで表す)01026