画像識別で目的の場所(オブジェクト)を指定するなど、GUIを自動で操作するフリーツール:「sikuliX」。その sikuliX での繰り返し(for / while 文)について、本記事で紹介していこうと思います。
※sikuliXの構文は、基本的にPython の構文がそのまま利用できます。そのため、一部Pythonの文法の説明になっている部分があります。
for文の構文
以下に、一例としてよく使いそうなものを記載します。
なお、sikuliXで動かす場合、インデントの位置(Tabキー:1つ分)も正確に設定しないと、エラーとなりプログラムが実行されませんので、注意しましょう。
基本形
基本の構文パターンは以下のように記載できます。
for “変数” in “繰り返したい回数”:
繰り返したい処理
構文例
count = 1
for count in range(5):
print(count)
実行結果
「1」「2」「3」「4」「5」が順に表示される。
※指定した回数だけループを使いたい場合は、range関数を使用しなければなりません。使用しない場合は、TypeError: ‘int’ object is not iterable が表示されます。これは、for文の繰り返しの箇所が、iterableなものでないといけないためです。
※iterableとは、「1つずつ返す機能をもったオブジェクト」と思ってください。具体的には、「リスト」「文字列」「配列」などが挙げられます。
else文
else を使用したパターンです。
for文でも条件分岐(if文)と同じように、elseが使用できます。elseで記載された処理は、for文の繰り返しが終わった時に、実行される処理になります。
for “変数” in “繰り返したい回数”:
繰り返したい処理
else:
繰り返し回数が終わった時に実行される処理
構文例
count = 1
for count in 5:
print(count)
else:
print(“finish the loop”)
実行結果
「1」「2」「3」「4」「5」「finish the loop」が順に表示される。
こちらのパターンでは、elseを使う意味や利点が分かりにくいと思います。elseを使わなくても同じことじゃないか?と思うかもしれません。
そんな場合は、次のbreak文およびcontinue文を確認してください。break文を利用する利点が分かるかと思います。
break文
以下は、break文です。
if文と併用することで、for文の繰り返しの途中でも for文から抜けることができます。
for “変数” in “繰り返したい回数”:
繰り返したい処理
break
構文例1
count = 1
for count in 5:
print(count)
if count == 3
break
実行結果1
「1」「2」「3」が順に表示される。
構文例2
count = 1
for count in 5:
print(count)
if count == 3
print(“finish the loop by 3”)
break
else
print(“finish the loop by 5”)
print(“finish the loop by 3 or 5”)
実行結果2
「1」「2」「3」「finish the loop by 3」「finish the loop by 3 or 5」が順に表示される。
continue文
以下は、continue文です。
if文と併用することで、特定の条件下の処理をした後でも、引き続き for文の繰り返しを続けることができます。
for “変数” in “繰り返したい回数”:
繰り返したい処理
continue
構文例1
count = 1
for count in 5:
print(count)
if count == 3
continue
実行結果1
「1」「2」「3」「4」「5」が順に表示される。
構文例2
count = 1
for count in 5:
print(count)
if count == 3
print(“finish the loop by 3”)
continue
else
print(“finish the loop by 5”)
print(“finish the loop by 3 or 5”)
実行結果2
「1」「2」「3」「finish the loop by 3」「finish the loop by 5」「finish the loop by 3 or 5」が順に表示される。
リスト
配列を使用し、以下のような記載もできます。
for “変数” in “リスト”:
繰り返したい処理
構文例
music = [‘pops’, ‘classic’, ‘jazz’]
for elements in music:
print(elements)
実行結果
「pops」「classic」「jazz」が順に表示される。
while文の構文
こちらでも、一例としてよく使いそうなものを記載します。
基本形
基本の構文パターンは以下のように記載できます。
while 条件式
繰り返したい処理
構文例
count = 0
while count < 5:
print(count)
count = count + 1
実行結果
「0」「1」「2」「3」「4」が順に表示される。
while文で注意しないといけないのは、条件式に変化をつける式( 上記例では、インクリメント:count = count + 1)を記載しないと、いつまでもループが続き、永久ループになってしまいます。意図的に永久ループを起こしたい場合を除き、条件に変化をつけるようにしましょう。
break文
永久ループにしたい場合は、条件式を「True」や「1」と設定すれば良いです。この場合、ループを抜けるための処理をするには条件分岐(if文)とbreakを使うと良いと思います。
while 条件式
繰り返したい処理
break
構文例
count = 0
while True:
if count == 5
break
print(count)
count = count + 1
実行結果
「0」「1」「2」「3」「4」が順に表示される。
また、その他のfor文で説明した内容は、同様にwhile文でも通用するので試してみてください。
まとめ
今回は、繰り返し(for文 / while文)について記載しました。どちらを利用するかは、各々考えて使ってみてください。
なお、本記事の内容はあくまで一例です。基本形をベースに、他にも色々試してみると、新たな気づきもあるかと思います。
↓↓sikuliX についての以下の記事も、どうぞ↓↓