%P710:Python7暫定仕様(1)
★「Octal_Python」作成のための断片的備忘録です./*〔on line 編集 試行中〕*/
☆「Courier_Python」作成のための断片的備忘録です.
/*背景色は(茶: 編集・確認中; 灰色: 確認済; 緑: 非慣用記法; 白色: 初期化済)*/
/*「緑」は定義行のみ(他ではシアン).「茶」の語句があるパラグラフは「IDも茶」*/
・「Courier_Python」は長いので「Python7」と略記
・スクリプトは「Courier」で表示/*「フォントテスト★」*/ ★https://www.blogger.com/blog/post/edit/6859150935899261916/7173240099006907548
%711:Python7(1)/*〔原案〕*/
`▼
--------------------------------------------------------------------------------
(0)使えない文字も使ったスクリプトを「Formal_Python★」で実行するための試案 ★https://www.blogger.com/blog/post/edit/6943714883075862421/5845028739903561746
①「ASCII_Python」を「Courier_Python」と改称する
②使用不能文字がない「Tiny_Python」での実装を考える./*「(1)⑦#1」*/
・「Tiny_Python」では等幅フォントを使っていない
・文字列の背景色(オプション)の設定は断念する./*〔原稿を手動で着色〕*/
・文字列「□1」を「`$1_」で表示する./*「(2)①」*/
・「Python7」の名前空間を「$SP7」で表示する
(1)参考資料
①【tutorial】「Python3 チュートリアル」
②【reference】「Python3 言語リファレンス」
③【library】「組み込み関数」
④【[Trial-14]】「Python」試用録(14)」@
・%E11:資料の参照
・%E2:[Trial_□]のパラグラフに関するメモ
・%E3:行番号の付加
・%E4:使用不能文字対策
⑤【[Trial-18]】「Python」試用録(18)」@
⑥制御文字
⑦Pythonの実装
・Pythonのインタプリタは多くのOSに対応している。
#1.プログラマーのグローバルコミュニティは、無料のオープンソースリファレンス
の実装であるCPythonを開発および保守している 。
#2.非営利団体であるPythonソフトウェア財団は、
PythonとCPythonの開発のためのリソースを管理・指導している。
(2)原稿では「(1)④[%E4]」の使用不能文字「'$'」,「'?'」,「'`'」も使う ①「Python3」のトークン「□」の先頭に「'`'」を置き末尾に複数個の
「' '」を付加して字句解析の簡略化する左端の「' '」を「'_'」で置換.
/*〔一般形は「`□_」.例:「if:」⇒「`if:_ 」〕*/
②「Python3」の文字列「'□'」,「"□"」は単に「'□'_」,「"□"_」と略記.
/*〔「''_」,「""_」は空列; 1文字「"」,「'」は「'"'_」,「"'"_」〕*/
③このブログではスクリプトを「Courier」で表示
・等幅フォントだから見落とし難く背景色の設定も容易
/*〔「Blogger」の「デフォルトのフォントは「MSP明朝」〕*/
④校正を容易にするために「(1)①」の「'`'」,「'_'」をシアンに着色してもよい
⑤原稿は「Terapad★」で作成し解釈実行前に「Python3」のトークンに戻す.
⑥制御文字は「\b」(08)「\t」(09)「\n」(0A)「\r」(0D)のみ
⑦行番号は考えない./*〔「(1)④」のようにコメント化してもよい〕*/
⑧全角スペースを積極的に使い「⑤」のときに2個の半角スペースに置換する.
--------------------------------------------------------------------------------
`▲①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳〔〕【】
%712:字句解析/*〔【[%612](1)】のコピーに加筆〕*/
`▼
--------------------------------------------------------------------------------
(1)形式ばらない Python の紹介/*【[%71131]:[%711](3.1)】*/
・式を入力すると、その結果が表示されます。
・演算子は他のほとんどの言語と同じように動作します
・丸括弧をグループ化に使うこともできます。
・浮動小数点を完全にサポートしています。
・文字列を記述する方法は複数あり、単引用符 で囲むか、二重引用符で囲みます。
結果はどちらも同じ文字列になります。
・引用符は、\ でエスケープできます。
・\ に続く文字を特殊文字として解釈されたくない場合は raw strings が使えます:
(2)変数と定数
・とほほのPython入門 - 変数・定数
(3)演算子
・とほほのPython入門 - 演算子
(4)関数
・とほほのPython入門 - 関数
(5)デリミタ
・Pythonで文字列を分割(区切り文字、改行、正規表現、文字数)
(7★)原案への付則(簡略化記法)を[%716]に追加
--------------------------------------------------------------------------------
`▲
%713:構文解析/*〔【[%613]】の部分コピーに加筆〕*/
`▼
--------------------------------------------------------------------------------
(0)参考資料
①if 文/*【[%71141]:[%711](4.1)】*/
②for文/*【[%71141]:[%711](4.2)】*/
③break文,continue文とelse節/*【[%71144]:[%711](4.4)】*/
④関数定義/*【[%71147]】*/
⑤デフォルトの引数値/*【[%711471]】*/
⑥キーワード引数/*【[%711472]】*/
⑦リスト型/*【[%71151]】*/
⑧タプルとシーケンス/*【[%71153]】*/
⑪集合型/*【[%71154]】*/
⑫辞書型/*【[%71155]】*/
(1)「if 文」
・「if num > 10:」+「print "BIG"」+「elif num == 10:」+「print "NORMAL"」+
「else:」+「print "SMALL"」
(2)「for 文」
・Python の for 文は、任意のシーケンス型 (リストまたは文字列)
にわたって反復を行います。
反復の順番はシーケンス中に要素が現れる順番です。
・break文,continue文とelse節
--------------------------------------------------------------------------------
`▲①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳
%714:解釈実行
`▼
--------------------------------------------------------------------------------
(0)エラー処理
参考資料
・プログラムが終了したら正常な場合でも、死んだ場合でも、通知して欲しい。
(2★)「exit()」関数の用法
⑩「printf("finished.")」,「return 0」
⑪「printf("undefined.")」,「return 1」
⑫「printf("invalid token.")」,「return 2」
⑬「printf("invalid syntax.")」,「return 3」
⑭「printf("waiting.")」,「return 4」
⑮「printf("interrupted.")」,「return 5」
(3)
--------------------------------------------------------------------------------
`▲
%715:試行例
`▼
--------------------------------------------------------------------------------
(0)各項目での表示内容:
・タイトル/*〔「⑩」で表示して「⑪-⑲」に補足〕*/
--------------------------------------------
①「Python7」の原稿
--------------------------------------------
②「Python3」のスクリプト
--------------------------------------------
③実行結果
--------------------------------------------
(1)参考資料. /*〔「Ex.1」不在〕*/
②@「tutorial【★】」/*「★https://docs.python.org/ja/3/tutorial/」*/
③@「tohoho【★】」/*「★http://www.tohoho-web.com/python/」*/
④@「@IT【★】」/*
「★https://www.atmarkit.co.jp/ait/subtop/features/di/pybasic_index.html」*/
「★https://www.atmarkit.co.jp/ait/subtop/features/di/pybasic_index.html」*/
⑤@「Anaconda IDE★」の使い方
「★https://www.blogger.com/blog/post/edit/6859150935899261916/7321409071314954091」
「★https://www.blogger.com/blog/post/edit/6859150935899261916/7321409071314954091」
・ファイルの直リンクはご遠慮ください。
(2)Ex.2:「Python.org【3.1.1. 数】」
⑩数式「5 * 3 + 2」の計算
⑪他のほとんどの言語と同じように動作します
⑫「(0)①」では原稿「□」を文字列として呈示/*〔【[%711](2)】に準拠〕*/
⑬「(2)②」の「5 * 3 + 2」はコンソール入力「>>> 5 * 3 + 2」から抽出
⑭「対話モード★」では、最後に表示された結果は変数 _ に代入されます。
--------------------------------------------
①「"5 * 3 + 2"_」
--------------------------------------------
②「5 * 3 + 2」
--------------------------------------------
③「17」
--------------------------------------------
(3)Ex.3:「tohoho【代数演算子(+, -, *, /, %, **, //)】」
⑩切り捨て除算「7 // 4」 「(-7) // 4」の計算
--------------------------------------------
①「Python7」の原稿
--------------------------------------------
②「Python3」のスクリプト
--------------------------------------------
③実行結果
--------------------------------------------
(4)Ex.4:「@IT【数値と算術演算 (2/2)】」
⑩演算子の優先順位
⑪ここまでに出てきた演算子(とその他の演算子や関数)の
優先順位を高い順に以下の表にまとめておく。
⑫ここまでに説明した各演算は、整数と浮動小数点数を意識することなく行える。
⑬整数値と浮動小数点数値が被演算子に含まれている場合、
整数値が浮動小数点数値として見なされるようになる。
--------------------------------------------
①「Python7」の原稿
--------------------------------------------
②「Python3」のスクリプト
--------------------------------------------
③実行結果
--------------------------------------------
(5)Ex.5:「Python試用録(14)★」
⑩原稿のコピー&ペースト
⑪「'#'を行頭から48文字目に」/*【★[%E3](0)②】*/
⑫ブロックの最終行を「\n」にする
⑬「①」の原稿を「tmp.txt」にコピーして
「 」(全角),「`」,「_」を半角スペースで置換して「②」を作る
・「 」(全角)の方が「 」(半角)より幅が狭い./*〔「」内はCourier〕*/
⑭「行末の6文字」は「Python8」で手動で修正する.
⑭「行末の6文字」は「Python8」で手動で修正する.
--------------------------------------------
①「Python7」の原稿
--------------------------------------------
number = 30 #001.1
#002.1
if number % 3 == 0: #003.1
print('Fizz') #004.2
elif number % 5 == 0: #005.1
print('Buzz') #006.2
elif number % 15 == 0: #007.1
print('FizzBuzz') #008.2
else: #009.1
print(number) #010.2
\n #011.1
※行番号(spreadsheetで作成)を10進表示に修正
--------------------------------------------
②「Python3」のスクリプト
--------------------------------------------
number = 30 \t
if number % 3 == 0: \t
print('Fizz')
elif number % 5 == 0: \t
print('Buzz')
elif number % 15 == 0: \t
print('FizzBuzz') \t
else: \t
print(number) \t
\n
--------------------------------------------
③実行結果/*〔「>>>30」⇒「number = int(30) 」〕*/
--------------------------------------------
30 FizzBuzz
--------------------------------------------
(6)Ex.6:
--------------------------------------------------------------------------------
`▲
%716:補遺
`▼--------------------------------------------------------------------------------
(0)付則(簡略化記法)/*〔□は原稿の文字列〕*/
①「□」で改行
②「_□」は字下げ
③「`(□)`}」は長語/*〔□は10文字以上で80文字以下の文字列〕*/
④「`{□`}」は長文/*〔□は10行以上で80行以下の文〕*/
⑤「長語」「長文」は「+」の連鎖に分解してもよい/*〔「+」で改行〕*/
⑥「複合文」の連鎖を「ブロック」と略記する./*〔非「block」(1)①〕*/
⑦「ブロック」内で「goto 文」を使ってもよい
(2)「if 文」/*【[%713](1)】*/
①「if A:」+「_P」+「elif B:」+「_Q」+「else:」+「_R」
(3)「for 文★」/*【[%713](2)】*/
①「for x in L:」+「_P」./*〔e.g.「L:」=「 ['a', 'b', 'c']」〕*/
②「for x in range(N)」+「_P」
③「for x in L:」+「_P」+「_continue」
/*〔「_P」=「_if A:」+「_Q」+「else:」+「_R」〕*/
④「for x in L:」+「_if A:」+「_P」+「__break」
「_if B:」+「_Q」+「_continue」
(4)「while文★」
(5)行番号
(6)組み込み関数
・数論および数表現の関数
math.ceil(x):x の「天井」 (x 以上の最小の整数)
math.floor(x):x の「床」 (x 以下の最大の整数)
math.comb(n, k)
(7)正規表現
・特殊文字を以下に示します:
'.':改行以外の任意の文字にマッチ/*〔小数点に支障〕*/
'^':文字列の先頭にマッチ/*〔べき乗に支障〕*/
'$':文字列の末尾/*〔「名前空間★」に支障〕*/
(8)「(7)」への補足
・「Python7」uses the following expressions which are against「(7)」.
(1)〔小数点に支障〕:「S = 5 * 5 * 3.1416」
(2)〔べき乗に支障〕:「(x + 2) * (x + 3) = x^{2} + 5 * x + 6」
(3)〔「名前空間★」に支障〕:「class $Py8」「class $Py9」を使いたい.
--------------------------------------------------------------------------------
`▲/*chars in {'$', '?' , '`'} are invalid.*/
%717:Note in English
`▼
--------------------------------------------------------------------------------
(0)【%715:試行例】/*「(2)-(4)」*/are explained
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
`▲①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳〔〕【】
%718:FAQ
`▼
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
`▲
%719:EOF(@L1H)
0 件のコメント:
コメントを投稿