さて、寄り道が長くなりましたが、
プログラム3つの基礎の二つ目
「条件分岐」について解説していきたいと思います。
プログラムは基本的に上から順に実行されますが、
時と場合によって
“処理順を変えたい”、“状況に応じて処理の実行を切り替えたい”
という状況が出てきます。
サンプルとして以下のコードを走らせてみて下さい。
この様に、ユーザーに選択を任せたい場合も
条件分岐で、実行される処理を変える事が出来ます。
if文の使い方
条件分岐には「if」という「もし~だったら」という構文を使います。
上記のコードは若干複雑なので、以下にシンプルなコードを用意しました。
これを走らせるとスクリプトエディタのログに
以下の様な結果が吐かれます
「iTestInt は 5 以上です」と判定されました。
それでは、試しに「iTestInt = 7」を「iTestInt = 3」に書き換えて走らせてみます。
判定が、5以下に変わりました。
さて、
「iTestInt = 7」という、新要素である「変数」が
いきなり出てきて混乱されたかも知れませんが
全く難しいものではありませんので、ご安心下さいませ。
この「変数」というのは、
若き日に受けた数学の授業を思い出して頂きたいのですが
「x」や「y」といった、数値を代入出来る文字を「変数」と呼んでおりましたよね
正にアレです。
違う点としては、代入出来るのは「数値」だけではなく
「文字列」や「リスト」等、なんでも入れる事が出来ます。
(特にPythonは、変数の型を自動で定義してくれるので
本当に何でも入れられてしまいます)
更に「x・y・z」だけではなく、どんな文字列でも変数として扱う事が出来ます。
(ただし、一部例外もあります・・・コマンド名・フラグ名・環境変数等)
サンプルでは「x」ではなく「iTestInt 」を変数としている訳ですね。
つまり・・・
if iTestInt > 5:
↑この、サンプルのIF文の意味は、
「もし、変数 iTestIntの値 が 5 よりも大きかったら」となります。
大きかった場合に分岐後の処理を行うわけです。
else の使い方
もう、お分かりかとは思いますが
「else:」は「If」で提示された条件以外の場合の処理となります。
サンプルコードの場合、
「もし iTestInt が 5 よりも大きかったら」以外の条件であれば、
else分岐後の処理を行います。
もちろん、条件を満たさない場合の処理が必要無ければ
「else:」は作らなくても問題ありません。
if not の使い方
「if文」には「not」を付けるだけで条件を「条件以外もの」に変更出来ます。
サンプルコードを「if not」にすると
「iTestInt」変数の値が「5」以上ではなく「5」以下のときに
ログがプリントされます。
elif の使い方
「elif」は 「if」の条件に当てはまらなかった「else」の中から
更に条件をかけて分岐させるというものです。
サンプルコードに「elif」で2以上のものという条件を足しました。
これで「iTestInt」変数が「7」の場合は「iTestInt は 5 以上です」という結果を吐き、
「3」の場合は「iTestInt は 2 以上です」という結果を吐く様になります。
「条件分岐」の実践例として
よくある使われ方としては、
処理を走らせる前の「OK・キャンセル」のダイアログがあります。
次項 → 06_インデント
前項 → 04 _コマンドリファレンスの使い方
一覧へ
関連-------------------------------------
Python_MAYA機能メモ
Python_MAYA_ちょっとしたツール集
Python_エラーメモ
編集
プログラム3つの基礎の二つ目
「条件分岐」について解説していきたいと思います。
プログラムは基本的に上から順に実行されますが、
時と場合によって
“処理順を変えたい”、“状況に応じて処理の実行を切り替えたい”
という状況が出てきます。
サンプルとして以下のコードを走らせてみて下さい。
#---------------------------------------------------------------------------------------------------
import maya.cmds as cmds
if cmds.confirmDialog(message="分かれ道、どちらに進む?",button=["←","→"],icon="question") == "←":
cmds.confirmDialog(message="熊さん に 出会った・・・",button=["close"],icon="warning")
else:
cmds.confirmDialog(message="埋蔵金 を 発見!!",button=["close"],icon="information")
#---------------------------------------------------------------------------------------------------
この様に、ユーザーに選択を任せたい場合も
条件分岐で、実行される処理を変える事が出来ます。
if文の使い方
条件分岐には「if」という「もし~だったら」という構文を使います。
上記のコードは若干複雑なので、以下にシンプルなコードを用意しました。
#---------------------------------------------
iTestInt = 7
if iTestInt > 5:
print( "iTestInt は 5 以上です" )
else:
print( "iTestInt は 5 以下です" )
#---------------------------------------------
これを走らせるとスクリプトエディタのログに
以下の様な結果が吐かれます
「iTestInt は 5 以上です」と判定されました。
それでは、試しに「iTestInt = 7」を「iTestInt = 3」に書き換えて走らせてみます。
判定が、5以下に変わりました。
さて、
「iTestInt = 7」という、新要素である「変数」が
いきなり出てきて混乱されたかも知れませんが
全く難しいものではありませんので、ご安心下さいませ。
この「変数」というのは、
若き日に受けた数学の授業を思い出して頂きたいのですが
「x」や「y」といった、数値を代入出来る文字を「変数」と呼んでおりましたよね
正にアレです。
違う点としては、代入出来るのは「数値」だけではなく
「文字列」や「リスト」等、なんでも入れる事が出来ます。
(特にPythonは、変数の型を自動で定義してくれるので
本当に何でも入れられてしまいます)
更に「x・y・z」だけではなく、どんな文字列でも変数として扱う事が出来ます。
(ただし、一部例外もあります・・・コマンド名・フラグ名・環境変数等)
サンプルでは「x」ではなく「iTestInt 」を変数としている訳ですね。
つまり・・・
if iTestInt > 5:
↑この、サンプルのIF文の意味は、
「もし、変数 iTestIntの値 が 5 よりも大きかったら」となります。
大きかった場合に分岐後の処理を行うわけです。
else の使い方
もう、お分かりかとは思いますが
「else:」は「If」で提示された条件以外の場合の処理となります。
サンプルコードの場合、
「もし iTestInt が 5 よりも大きかったら」以外の条件であれば、
else分岐後の処理を行います。
もちろん、条件を満たさない場合の処理が必要無ければ
「else:」は作らなくても問題ありません。
if not の使い方
「if文」には「not」を付けるだけで条件を「条件以外もの」に変更出来ます。
#---------------------------------------------
iTestInt = 7
if not iTestInt > 5:
print( "iTestInt は 5 以下です" )
#---------------------------------------------
サンプルコードを「if not」にすると
「iTestInt」変数の値が「5」以上ではなく「5」以下のときに
ログがプリントされます。
elif の使い方
「elif」は 「if」の条件に当てはまらなかった「else」の中から
更に条件をかけて分岐させるというものです。
#---------------------------------------------
iTestInt = 7
if iTestInt > 5:
print( "iTestInt は 5 以上です" )
elif iTestInt > 2:
print( "iTestInt は 2 以上です" )
else:
print( "iTestInt は 2 以下です" )
#---------------------------------------------
サンプルコードに「elif」で2以上のものという条件を足しました。
これで「iTestInt」変数が「7」の場合は「iTestInt は 5 以上です」という結果を吐き、
「3」の場合は「iTestInt は 2 以上です」という結果を吐く様になります。
「条件分岐」の実践例として
よくある使われ方としては、
処理を走らせる前の「OK・キャンセル」のダイアログがあります。
#---------------------------------------------------------------------------------------------------
import maya.cmds as cmds
#UI作成
cmds.window( title ="MyUI", width = 200 )
cmds.columnLayout( adjustableColumn =True )
cmds.button( label ="ロケータを作成して親子付け", command ="fCreateLocatorParent()" )
cmds.showWindow()
#ロケータ作成関数
def fCreateLocatorParent():
if cmds.confirmDialog(message="ロケータを作成しますか?",button=["OK","Cancel"],icon="question") == "OK":
cmds.spaceLocator( p = [0, 0, 0] )
cmds.spaceLocator( p = [0, 0, 0] )
cmds.parent( "locator2", "locator1" )
#---------------------------------------------------------------------------------------------------
次項 → 06_インデント
前項 → 04 _コマンドリファレンスの使い方
一覧へ
関連-------------------------------------
Python_MAYA機能メモ
Python_MAYA_ちょっとしたツール集
Python_エラーメモ
編集
※コメント投稿者のブログIDはブログ作成者のみに通知されます