MODOではじめるPython_06 for文

mihi
こんにちは、mihiです。
今回は「繰り返し処理」を行うための「for文」について、
解説していきます。

for文

「for文」は一定の処理を指定回数配列に格納されている要素数繰り返すための機能です。
例えばMODOで言うと、選択されている全ての頂点の座標を知りたい場合、
以下のようなフローが考えられます。

一定の処理内容

  1. 1番目に選択されている頂点を調べる
  2. 1番目に選択されている頂点の座標を「配列」などに代入する

上記の一定の処理内容を、選択されているすべての頂点に対して行うことになります。
10個頂点が選択されていれば、10回上記の処理を繰り返すことになります。

ここで「for文」の登場です。

実際にMODOでスクリプトを書く場合、
選択されている頂点の一覧は、配列(tuple型)で取得することが可能です。
この配列に格納されている頂点1つ1つについて「for文」で座標を調べることになります。

for文の記述方法

for 変数 in 配列:

   処理内容1行目
   処理内容2行目
   処理内容3行目
   処理内容4行目
   処理内容5行目
       ・
       ・
       ・

以上のように記述します。
「for」の次に「変数を宣言」していますが、
「値」の代入は行いません。

この「変数」には、その後に続く「配列」の要素が1つずつ、
「for文」の繰り返し処理が開始するたびに代入されます。
そして最後の要素が代入されて、「for文」の一定の処理が終わると、
「for文」の繰り返し処理は終了となります。

「for文」も「if文」同様に、
どこまでが「for文」による繰り返し処理の内容なのかを明確にするため、
処理内容はインデントによる字下げを行います

for文を書いてみる

array = [1, 2, 3, 4, 5]

for i in array:
   print(i)

以上のように書いてみます。
まず「array」と言う変数を宣言し、「list型」の配列を用意して代入しています。
あらかじめ、配列の要素も代入しておきました。

次に「for文」を記述しています。

「for」の後に「i」と言う変数を宣言し、
「in」に続いて、先に作成した配列「array」を指定しています。

この場合の処理の内容は以下の通りとなります。

1巡目は「array」のインデックス「0」の要素「1」が変数「i」に代入されます。
処理内容は、インデントで字下げをした「print(i)」が実行されます。
ここで繰り返し処理の内容は終了となりますので、
次の順になります。

次の順は、配列「array」のインデックス「1」の要素「2」が変数「i」に代入されます。
処理内容は、インデントで字下げをした「print(i)」が実行されます。
ここで繰り返し処理の内容は終了となりますので、
次の順になります。

と言う具合に、今回の場合は配列の最後の要素「5」まで、
「for文」による繰り返し処理が行われます。


「for文」の動作イメージをわかりやすくすするために、上記のように「in」の後ろを書き換えてみました。
上記の通り「in」の後に、直接「配列」を記述してもかまいません。

array = [1, 2, 3, 4, 5]

for i in array:
   ans = i * 2
   print(ans)

上記は変数「i」に代入された「要素」に対して、2倍した値を変数「ans」へ代入しています。
そして、その結果を「print()」関数によって表示しています。

array = [1, 2, 3, 4, 5]

for i in array:

   if i == 3:
      print(i)

上記の通り、「if文」と組み合わせて使用する機会が、
MODOのスクリプトを書く上ではよく出てきます。
この場合、「i」に「3」が代入された場合だけ、
「print()」関数が実行される仕組みです。

 

mihi
今回はここまでです。
MODOでスクリプトを書く上での最低限の知識を
6回に分けて解説してきました。
「if文」と「for文」は特に多用する機能です。
ここまでの基礎知識をしっかりと把握していただければ、
そこそこのスクリプトを書くことは難しくありません。
次回からは、MODOで本格的にスクリプトを書いていきましょう。
次回をお楽しみに!
>Profile

Profile

■mihi■

愛猫家

フリーランスとして建築CGを制作しています。

「MODO」と「3dsMax」を使用した
建築CGのテクニックや
日々の雑記を発信していきます。

よろしくお願いいたします。

CTR IMG