見出し画像

東大でPython! - 繰り返し(2)

繰り返しを実行する他の方法です。

in

Pythonでは for ループでリストを展開する in とは別にリスト内の要素の有無を検査する in 演算子と not in 演算子が定義されています。

if color in colors:  ・・・ if文の条件を設定するときに設定します。

リスト内に指定する要素があるかどうか判定します。あれば真偽値Trueとなり実行されます。以下実行すると"指定の色は含まれています"と出力されます。

colors = ['red', 'green', 'blue']

color = 'red'

if color in colors:
    print("指定の色は含まれています")

変数"color"を以下のように定義するとFalseとなり実行されません。実行されません。

color = 'orange'

while文による繰り返し

形式は以下となり条件がTrueの場合に処理が行われます。

while 条件:
  処理

以下を実行すると

x = 1
total = 0

while x <= 3:
    total += x
    x += 1

print(x)

"4"と出てききます。Xは1から始まり3までが条件です。最後の3の場合処理としては

x += 1    ・・・ xは1づつ足されていきます。

となっています。実際の処理としては

x = 1 の場合 ・・・ x は2になります。

次は"x = 2"となっているので"1"追加されると

x = 3 となり最後ののwhile文の最終条件となります。この場合も"1"足されるので

x = 4

となります。

ここで

x <= 3

の条件から外れるので"print(x)"とすると"4"とでてきます。


xの値としては

1,2,3,4

と変わっていくのでそれを

total += x

で足し込んでいくと

1+2+3 = 6

となります。この計算処理が終わった後"x"は以下の処理で"4"となります。

total += x  ・・・ 合計6になる
x += 1   ・・・ 足された後に"x"は"+1"されて"4"になる


"x = 4"となり最初の条件文

while x <= 3:

の"x"は”3以下の時に処理しなさい”ということなので"x = 4"では条件から外れ、このあとは実行されません。

Whileの繰り返しは最初に条件をクリアしたものだけ実行されます。


break とcontinue

繰り返し処理の途中でも

break ・・・ ”実行を止める”
continue ・・・ ”飛ばして続ける”

とすることができます。

break文

条件が合えばすぐに処理を終わりそのあとの処理は実行されません。

x = 256
total = 0
count = 0

while x > 0:
    if total > 500:
        break           
    total += x
    x = x // 2          
    count += 1

print(x, total,count)

4 504 6

と出力されます。

break以降が実行されていないかを確認してみます。

x = 256
total = 0

count = 0
count2 = 0 

while x > 0:
    count += 1
    if total > 500:
        break           
    total += x
    count2 += 1
    x = x // 2   
    print(x,total)       

print(x, total,count,count2)

count,count2の変数を作ってbreakの前後で実行されているかをみてみます。

これを実行すると

128 256
64 384
32 448
16 480
8 496
4 504
4 504 7 6  ・・・count,count2の変数で差が出ている

breakによってその後の処理が行われていないことがわかります。

continue文

条件が合えばそれ以下の処理をせずに次の処理へと飛ばして続けます。

colors = ['red', 'green', 'blue', 'black', 'white']
for c in colors:
    if c == 'black':
           continue
    print(c)

これを実行すうると"black"の順番の時には以下の処理"print(c)"の処理を飛ばして次の"blue"の処理を行っています。

この記事が気に入ったらサポートをしてみませんか?