タートルグラフィックスで繰り返しを使ってコードを整理してみようで共通するコードを繰り返しのfor文でまとめてみました。
前に作成したコードでは、
from turtle import * shape("turtle") for i in range(4): ␣␣␣␣forward(100) ␣␣␣␣left(90) done()
※␣は半角スペース1個分
繰り返しの回数が 4 回と指定していましたが、繰り返しの回数を指定したくない時が多々あります。
そんな時はwhile文で無限ループを利用します。
上記のコードをwhile文の無限ループで書き換えると、
from turtle import * shape("turtle") while True: ␣␣␣␣forward(100) ␣␣␣␣left(90) done()
※␣は半角スペース1個分 になります。
while文では、
while 条件式:
になりまして、条件式にTrueを入れると無限ループになります。
※条件式に関しては後程、if文で詳しく触れます。
今回のコードでは終了しないため、カメの現在地を知ることができるxcor()とycor()を利用して、無限ループから抜けてみます。
xcor()は現在のカメのx座標で、ycor()は現在のカメのy座標になり、注意としては、実数(0.0)のよううな値で返ってきます。
これらの内容を踏まえた上で、無限ループから抜けるコードを書いてみます。
from turtle import * shape("turtle") while True: ␣␣␣␣forward(100) ␣␣␣␣left(90) ␣␣␣␣if int(xcor()) == 0: ␣␣␣␣␣␣␣␣if int(ycor()) == 0: ␣␣␣␣␣␣␣␣␣␣␣␣break done()
※␣は半角スペース1個分
上記のコードはカメが移動した後、現在の位置のx座標とy座標を取得しますが、実数では扱いにくいため、
int(実数値)
で実数を整数に変換してから、x座標が 0 でy座標も 0 の場合にbreakを実行するという事をしています。
※breakをすると、for文かwhile文の繰り返しから抜けるという意味があります。
if は if文 と呼ばれ、
if 条件式:
で指定された条件が真(True)である場合に、特定のコードブロックを実行します。
コードブロックというのは、上の式であれば、if文の前にあるインテンド(半角スペースの塊)よりも更に深いインテンドで指定している処理の塊になります。
条件式中で値の判定を行う場合、
x == 0
==を用いて、左の値と右の値が等しいかを調べます。
※等しければ真(True)、等しくなければ偽(False)になります。
上のコードでは if文の条件の判定が二回行われていて、コードが見難くなりますので、
from turtle import * shape("turtle") while True: ␣␣␣␣forward(100) ␣␣␣␣left(90) ␣␣␣␣if int(xcor()) == 0 and int(ycor()) == 0: ␣␣␣␣␣␣␣␣break done()
※␣は半角スペース1個分
のように条件式をandでひとまとめにすることが多いです。
※andは両方の条件式が真(True)である場合に下記の行のコードブロックを実行するになります。