「Python試用録(5)」
%5:「Python試用録(5)」
「WILDの処理系」作成のための「断片的備忘録」です.
/*背景色は(茶: 編集・確認中; 灰色: 確認済; 緑: 非慣用記法; 白色: 初期化済)*/
/*緑は定義行のみ.他ではシアン*/
%51:[@IT_10]/*「if文による条件分岐 (2/2)」*/`▼
--------------------------------------------------------------------------------
(0)In[1]:
number = input('何か数値を入力してください: ')
number = int(number)
if number % 3 == 0:
print('Fizz')
elif number % 5 == 0:
print('Buzz')
elif number % 15 == 0:
print('FizzBuzz')
else:
print(number)
(1)参考資料
①[Py_8.1]https://docs.python.org/ja/3/reference/compound_stmts.html#the-if-statement
②https://www.python-izm.com/basic/if/
④https://www.atmarkit.co.jp/ait/articles/1905/07/news019_2.html
(2)「number == 15」とすると「Fizz」が表示される!/*「③」*/
(3)「④」では次のように修正されているが「C」等の「if文」とはかなり異なる
この場合も、「条件1」から順にそれが成り立つかどうかが判断され、
いずれかの条件が成立した時点で、その節のコードが実行され、
if文の実行は終了する。
(4)「①」の説明も「④」と同様で
if 文は、式を一つ一つ評価してゆき、真になるまで続けて、
真になった節のスイートだけを選択します
次に、選択したスイートを実行します
(そして、 if 文の他の部分は、実行や評価をされません)。
全ての式が偽になった場合、 else 節があれば、そのスイートが実行されます。
(5)他言語に慣れたプログラマには「elif」が非常に紛らわしい
①処理内容は「W6」の「;:」と同じ.
/*「Wildly Imitated Langage with Danger of misunderstanding」*/
--------------------------------------------------------------------------------
`▲
%52:「W6」の「例9★」`▼
★https://drive.google.com/file/d/1191Ev62Uo9yha0w87Kl5A01DsVCP7e-x/view?usp=sharing
「$EX9.SAME,.DATA:(
LET:(
$&A.LIKE,.' 3';
$&B.LIKE,.' 4';
$&C.LIKE,.' 5';
$A.$B.$C.$X.LIKE,.R7&;
$P.$Q.LIKE,.A&;
$SWAP(P;Q).SAME,.DO:(
X.=R7&@P; R7&@P.=R7&@Q; R7&@P.=X
)"[SWAP]"
);
DO:(
IF:A<B..SWAP(A#; B#);
IF:C<B..SWAP(B#; C#);
X.=A*A+B*B-C*C
)"[データは生成しない]"
IF:A+B>C..DATA:(
IF:X<0" "..%[鋭角三角形]%
IF:X=0" "..%[直角三角形]%
IF:1" "..%[鈍角三角形]%
;:1" "..%[ 非三角形]%
)
」
①「SWAP(A#; B#)」:「,」は目立ち難いので「W6」では「;」を使う.
②「A」は変数の値(頂点の対辺の長さ),「A#」は変数のアドレス.
③字数削減のため「W6」の字下げは2文字./*「コンソール画面は8×64文字」*/
%192: 開き括弧があると行頭の深さを+1、閉じ括弧があると行頭の深さを-1する。
・行頭の深さを構文解析時に修正し、短縮コード 「DATA:(74;11;N; &)」の「N」に設定。
・解釈実行時に行頭の深さを調べることで、ブロックのスキップが容易になる。
%193: 字句解析時に予約トークンを(「;」でなく )「; 」と考えて、
空白文字(スペース、タブ、 改行)は無視して中間コードを生成する。
①各トークンの末尾にスペースを付加して字句解析を容易にする./*「Pythonも」*/
--------------------------------------------------------------------------------
`▲
「WILDの処理系」作成のための「断片的備忘録」です.
/*背景色は(茶: 編集・確認中; 灰色: 確認済; 緑: 非慣用記法; 白色: 初期化済)*/
/*緑は定義行のみ.他ではシアン*/
%51:[@IT_10]/*「if文による条件分岐 (2/2)」*/`▼
--------------------------------------------------------------------------------
(0)In[1]:
number = input('何か数値を入力してください: ')
number = int(number)
if number % 3 == 0:
print('Fizz')
elif number % 5 == 0:
print('Buzz')
elif number % 15 == 0:
print('FizzBuzz')
else:
print(number)
(1)参考資料
①[Py_8.1]https://docs.python.org/ja/3/reference/compound_stmts.html#the-if-statement
②https://www.python-izm.com/basic/if/
④https://www.atmarkit.co.jp/ait/articles/1905/07/news019_2.html
(2)「number == 15」とすると「Fizz」が表示される!/*「③」*/
(3)「④」では次のように修正されているが「C」等の「if文」とはかなり異なる
この場合も、「条件1」から順にそれが成り立つかどうかが判断され、
いずれかの条件が成立した時点で、その節のコードが実行され、
if文の実行は終了する。
(4)「①」の説明も「④」と同様で
if 文は、式を一つ一つ評価してゆき、真になるまで続けて、
真になった節のスイートだけを選択します
次に、選択したスイートを実行します
(そして、 if 文の他の部分は、実行や評価をされません)。
全ての式が偽になった場合、 else 節があれば、そのスイートが実行されます。
(5)他言語に慣れたプログラマには「elif」が非常に紛らわしい
①処理内容は「W6」の「;:」と同じ.
/*「Wildly Imitated Langage with Danger of misunderstanding」*/
--------------------------------------------------------------------------------
`▲
%52:「W6」の「例9★」`▼
★https://drive.google.com/file/d/1191Ev62Uo9yha0w87Kl5A01DsVCP7e-x/view?usp=sharing
--------------------------------------------------------------------------------
%191:ソース9.W8「$EX9.SAME,.DATA:(
LET:(
$&A.LIKE,.' 3';
$&B.LIKE,.' 4';
$&C.LIKE,.' 5';
$A.$B.$C.$X.LIKE,.R7&;
$P.$Q.LIKE,.A&;
$SWAP(P;Q).SAME,.DO:(
X.=R7&@P; R7&@P.=R7&@Q; R7&@P.=X
)"[SWAP]"
);
DO:(
IF:A<B..SWAP(A#; B#);
IF:C<B..SWAP(B#; C#);
X.=A*A+B*B-C*C
)"[データは生成しない]"
IF:A+B>C..DATA:(
IF:X<0" "..%[鋭角三角形]%
IF:X=0" "..%[直角三角形]%
IF:1" "..%[鈍角三角形]%
;:1" "..%[ 非三角形]%
)
」
①「SWAP(A#; B#)」:「,」は目立ち難いので「W6」では「;」を使う.
②「A」は変数の値(頂点の対辺の長さ),「A#」は変数のアドレス.
③字数削減のため「W6」の字下げは2文字./*「コンソール画面は8×64文字」*/
%192: 開き括弧があると行頭の深さを+1、閉じ括弧があると行頭の深さを-1する。
・行頭の深さを構文解析時に修正し、短縮コード 「DATA:(74;11;N; &)」の「N」に設定。
・解釈実行時に行頭の深さを調べることで、ブロックのスキップが容易になる。
%193: 字句解析時に予約トークンを(「;」でなく )「; 」と考えて、
空白文字(スペース、タブ、 改行)は無視して中間コードを生成する。
①各トークンの末尾にスペースを付加して字句解析を容易にする./*「Pythonも」*/
--------------------------------------------------------------------------------
`▲
コメント
コメントを投稿