制御構文 - ループ
ちょっと日にちが空きましたが、
今回はループを勉強しました。
主題ではなく「not x (xが偽ならTrue)」の部分で躓いて無駄に時間を費やしてしまいました。
復習が足りてないですね。。。
以下、今回の備忘録です。
●4章 制御構文
■■ループ
■for
for ループ内変数名 in コンテナ
>>> for i in ["apple","orange","lemon"]:
... print(i)
...
orange
lemon
forループで任意の回数処理を繰り返したい場合には
range()ビルトイン関数を使う。
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
range関数は指定した数値の範囲内のiterableなオブジェクトを生成する。
※iterable・・・繰り返すことが出来る。
リストの要素を順に処理しつつ、インデックス番号も知りたい場合には
enumerate()ビルトイン関数を使う。
>>> for index, name in enumerate(["apple", "orange", "lemon"]):
... print(index, name)
...
0 apple
1 orange
2 lemon
ループが終わった後に実行したいプログラムがある場合は
elseを使う。
>>> for i in range(3):
... print(i)
... else:
... print("done")
...
0
1
2
done
elseブロックはforループをしなかった場合にも実行される。
breakでループを出た場合はelseは実行されない。
>>> for i in range(1,4):
... print(i)
... if i == 2:
... break
... else:
... print("loop finished")
...
1
2
continueはループ内のブロックを途中で終了し、次のループ処理へ飛ばす。
>>> for i in range(1, 4):
... print(i)
... if i == 2:
... continue
... print(i)
...
1
1
2
3
3
■while
・whileは条件が条件が真の間だけループし続け、
条件が変わった時に終了する。
・whileはifのように評価される式をとる。
・whileはブロックを実行する前に毎回条件を評価し、
条件が真の場合にのみループを続ける。
>>> done = False
>>> while not done:
... echo_text = input("echo > ")
... if echo_text == "bye":
... done = True
... print("さようなら")
... elif echo_text == "done":
... done = True
... else:
... print(echo_text)
...
echo > こんにちは
こんにちは
echo > どうもです
どうもです
echo > bye
さようなら
>>>
※ not x ・・・xが偽ならTrue、そうでなければFalse。
「done = False」でdoneが偽になる。
「not done」がFalseであり続ければ真なのでループし続ける。
・doneで抜けるケース
>>> done = False
>>> while not done:
... echo_text = input("echo > ")
... if echo_text == "bye":
... done = True
... print("さようなら")
... elif echo_text == "done":
... done = True
... else:
... print(echo_text)
...
echo > done
>>>
ループの終了時にメッセージを表示するコード。
>>> done = False
>>> while not done:
... echo_text = input("echo >")
... if echo_text == "bye":
... print("さようなら")
... done = True
... elif echo_text == "done":
... done = True
... else:
... print(echo_text)
... else:
... print("さようなら")
...
echo >こんにちは
こんにちは
echo >てすと
てすと
echo >done
さようなら
>>>
for文と同様、whileのelseもループが回らなくても実行される。
>>> while False:
... print("False")
... else:
... print("done")
...
done
※Falseは偽なのでループが実行されない。
for文と同様、breakで抜けた場合にはelseが適用されない。
>>> i = 0
>>> while 1:
... i += 1
... if i == 3:
... break
... print(i)
... else:
... print('finished')
...
1
2
※ 「while 1:」は「while True:」と同じで
breakするまで無限にループを繰り返す。
真を表せばいいので正の整数なら100でも999でもいい。
whileはfor文と同様、continueブロック内の処理を途中で終了して
次のループ処理にすすめる。
>>> i = 0
>>> while 1:
... i += 1
... if i == 3:
... continue
... else:
... print(i)
... if i == 5:
... break
...
1
2
4
5
>>>
パーフェクトPython (PERFECT SERIES 5)
- 作者: Pythonサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2013/03/05
- メディア: 大型本
- 購入: 1人 クリック: 65回
- この商品を含むブログ (19件) を見る