2021年1月26日火曜日

Python7暫定仕様(2)

 %720:Python7暫定仕様(2)
★「Octal_Python」作成のための断片的備忘録です./*〔on line 編集 試行中〕*/
☆「Courier_Python」作成のための断片的備忘録です.
/*背景色は(茶: 編集・確認中; 灰色: 確認済; 緑: 非慣用記法; 白色: 初期化済)*/
/*「」は定義行のみ(他ではシアン).「」の語句があるパラグラフは「IDも茶」*/
・「Courier_Python」は長いので「Python7」と略記
・スクリプトは「Courier」で表示/*「フォントテスト★」*/
https://www.blogger.com/blog/post/edit/6859150935899261916/7173240099006907548
・【[%727] 】を更新

%721★:Python7(2)/*〔修正案〕*/
`▼
--------------------------------------------------------------------------------
(0)「Python7(1)★」の修正案/*〔「★」:原案; 「☆」:修正案〕*/
https://www.blogger.com/blog/post/edit/6943714883075862421/5845028739903561746
 ②使用不能文字がない「Tiny_Python」での実装を考える./*「(1)⑦#1」*/
  ・「Tiny_Python」では等幅フォントを使っていない
  ・文字列の背景色(オプション)の設定は断念する./*〔原稿を手動で着色〕*/
  ・「□1」は任意の文字列.
  ・「Python7」の名前空間を「$SP7」で表示する.
(1)参考資料
 ④【[Trial-14]】「Python」試用録(14)」@
  https://oshino3.blogspot.com/2020/06/python14.html
  ・%E11:資料の参照
  ・%E2:[Trial_□]のパラグラフに関するメモ
  ・%E3:行番号の付加
  ・%E4:使用不能文字対策
 ⑥制御文字
  https://ja.wikipedia.org/wiki/制御文字
 ⑦Pythonの実装
  https://ja.wikipedia.org/wiki/Python
  #1.プログラマーのグローバルコミュニティは、CPythonを開発・保守.
  #2.非営利団体であるPythonソフトウェア財団は、
   PythonとCPythonの開発のためのリソースを管理・指導.
(2)原稿では「(1)④[%E4]」の使用不能文字「'$'」,「'?'」,「'`'」も使う
 ①「Python3」のトークン「□」の先頭に「'`'」を置き末尾に複数個の
  「' '」を付加して字句解析の簡略化するため左端の「' '」を「'_'」で置換.
  /*〔一般形は`_」.例:「if:」`if:_   」〕*/
★②「Python3」の文字列を「'□'」「'□'_」,「"□"」⇒「"□"_」と略記.
☆②「★②」にデリミタ「','_,_」,「';'_;_」を追加.
 ③このブログではスクリプトを「Courier」で表示
 ④校正を容易にするために「(2)①」の原稿の「'`'」,「'_'」をシアンにしてもよい
 ⑤原稿は「Terapad★」で作成し解釈実行前に「Python3」のトークンに戻す.
  ★https://tera-net.com/
 ⑥制御文字は「\b」(08)「\t」(09)「\n」(0A)「\r」(0D)のみ
 ⑦行番号は考えない./*〔「(1)④」のようにコメント化してもよい〕*/
 ⑧全角スペースを積極的に使い「⑤」のときに2個の半角スペースに置換する.
 ⑨ブロック「{□}」を「`{_`}_」と略記.
(3)簡略記法の要約
 ①「ASCII」の任意の文字列を「□0」,「□1」,「□2」のように略記.
 ②「□1」を「□2」と略記することを「□1」「□2」と表示./*「(2)②」*/
 ③「'0''0'_」,「"0""0"_」と略記.
  「''''_'""'_」==「'\0'_」==「chr(0)」/*「空列」*/
 ④「Python3」のトークン「0」の先頭に「'`'」を置き末尾に複数個の
  「' '」を付加して「`0_    」と表示して字句解析を簡易化する./*「(2)①」*/
 ⑤「□0」のフォントは「Courier」で表示.
   目立つように「'`'」,「'_'」をシアンにしてもよい(オプション).
 ⑥ブロックを「{}`{_`}_」と略記.
--------------------------------------------------------------------------------
`▲①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳〔〕【】

%712:字句解析/*〔[%612](1)のコピーに加筆〕*/
`▼
--------------------------------------------------------------------------------
(1)形式ばらない Python の紹介/*【[%61131]:[%611](3.1)】*/
・式を入力すると、その結果が表示されます。
・演算子は他のほとんどの言語と同じように動作します
・丸括弧をグループ化に使うこともできます。
★浮動小数点を完全にサポートしています。
☆実数は固定小数点表示のみ.
★文字列を記述する方法は複数あり、単引用符 で囲むか、二重引用符で囲みます。
☆文字列は原則として「"□"_」で表現する.
★\ に続く文字を特殊文字として解釈されたくない場合は raw strings が使えます:
☆\ に続く文字を特殊文字として解釈されたくない場合は「'□'_」を使用.
(2)変数と定数
・とほほのPython入門 - 変数・定数
 http://www.tohoho-web.com/python/variables.html
(3)演算子
・とほほのPython入門 - 演算子
 http://www.tohoho-web.com/python/operators.html
(4)関数
・とほほのPython入門 - 関数
 http://www.tohoho-web.com/python/function.html
(5)デリミタ
・Pythonで文字列を分割(区切り文字、改行、正規表現、文字数)
 https://note.nkmk.me/python-split-rsplit-splitlines-re/
(6)リスト・タプル・辞書
・とほほのPython入門 - リスト・タプル・辞書
 http://www.tohoho-web.com/python/list.html
 ①「a = [10, 20, 30, 40]a = [10,_ 20,_ 30,_ 40]
 ②「a = (10, 20, 30, 40)a = (10,_ 20,_ 30,_ 40)
 ③「d = {'Yamada': 30, 'Suzuki': 40, 'Tanaka': 80}
  d = `{_'Yamada': 30,_ 'Suzuki': 40,_ 'Tanaka': 80`}_
(7)原案への付則(簡略化記法)を[%726]に追加
--------------------------------------------------------------------------------
`▲

%727:Note in English
`▼
--------------------------------------------------------------------------------
(0)%721](3)is explained
(3)簡略記法の要約
 ①「□0」,「□1」,「□2」are 「ASCII strings」
 ②「□1」「□2」means that「□1」is replaced by「□2」
 ④Any token「□0」is modified as「`□0_    」where
  ・「'`'」:begin
  ・「'_'」:end
  ・「    」:spaces to adjust position 
 ⑤Any script is shown using Courier which is easy to set background color
  as shown in ④./*Background colors are optional.*/
 ⑥A block「{}」is expressed as「`{_`}_」.
(4)[%712](6)is also introduced here.
・examples(list, tuple, dictionary)
・Probably background colors are helpful for beginners to read scripts.
 http://www.tohoho-web.com/python/list.html
 ①「a = [10, 20, 30, 40]a = [10,_ 20,_ 30,_ 40]
 ②「a = (10, 20, 30, 40)a = (10,_ 20,_ 30,_ 40)
 ③「d = {'Yamada': 30, 'Suzuki': 40, 'Tanaka': 80}
  d = `{_'Yamada': 30,_ 'Suzuki': 40,_ 'Tanaka': 80`}_
--------------------------------------------------------------------------------
`▲

%728:FAQ
`▼
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
`▲①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳〔〕【】¬⇒⇔∀∃∈⊂∧∨

%729:EOF(@L1S)

2021年1月25日月曜日

Python3(2)

%320:Python3(2)
/*背景色は(茶: 編集・確認中; 灰色: 確認済; 緑: 非慣用記法; 白色: 初期化済)*/
/*「」は定義行のみ(他ではシアン).「」の語句があるパラグラフは「IDも茶」*/
・「下書き」を公開

%321:「Python」の俯瞰(改行すると行間が空く)`▼

%321:「Python」の俯瞰`▼
--------------------------------------------------------------------------------
(0)「CPython」とは?  /*〔「Chrome」なら翻訳して表示〕*/
(1)参考資料
 ①https://en.wikipedia.org/wiki/Python_(programming_language)
 ②https://ja.wikipedia.org/wiki/MicroPython 
 ③https://wiki.python.org/moin/Tiny%20Python
 https://wiki.python.org/moin/FrontPage

(1)(1)④からの引用
・Pythonは、優れたオブジェクト指向、インタープリター型、
 およびインタラクティブなプログラミング言語です。
・Lisp、Tcl、Perl、Ruby、C#、Visual Basic、Visual Fox Pro、Scheme、Java
などと比較されることがよくあります。もっと楽しいです。
・無料が好きな日本でも「CPython」が普及?(とくに高専,大学)
(2)(1)②からの引用
・MicroPythonはマイコン上で動作する完全なPythonコンパイラおよびランタイムである。
 サポートされたコマンドを即時実行するための対話型プロンプト
・MicroPythonにはPythonのコア・ライブラリのみならず、
 低レイヤへのアクセスを提供するモジュール群も含まれる。
(3)(1)③はこのブログで使用中/*【[%610]★】*/
・「Tiny_Python試用録(1)★」
https://www.blogger.com/blog/post/edit/6859150935899261916/7220686565518261112
・「Tiny_Python試用録(2)★」/*【[%620]★】*/
https://www.blogger.com/blog/post/edit/6943714883075862421/524789359547948012
--------------------------------------------------------------------------------
`▲①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳

%322:「MicroPython」の紹介/*〔単なる引用〕*/
`▼
--------------------------------------------------------------------------------
(0)「(1)①」からの引用です
(1)参考資料
 ①https://micropython-docs-ja.readthedocs.io/ja/latest/esp32/tutorial/intro.html

(2)ESP32 での MicroPython の始め方
 MicroPython を使うと、ESP32 ボードを最大限に活用することができます。
 逆も同様、ESP32 チップは MicroPython を使用するための優れたプラットフォーム。
 このチュートリアルでは、MicroPython の設定、プロンプトの表示、
 WebREPLの使用、ネットワークへの接続、インターネットとの通信、
 ハードウェアペリフェラルの使用、
 およびいくつかの外部コンポーネントの制御について説明します。
(3)必要なもの
 最初に必要なのは、ESP32 チップを搭載したボードです。
 MicroPython ソフトウェアは ESP32 チップ自体をサポートしており、
 どのボードでも動作するはずです。
 ボードについて気にするとことは、GPIO ピンが外にどのように接続されているか、
 UART を PC で使用できるようにする
 内蔵 USB シリアルコンバータが含まれているかどうかです。
(4)ボードの電源を入れる
 ボードに USB コネクタがある場合は、
 PC に接続されているときに電源が供給されている可能性が非常に高いです。
 それ以外の場合は、直接電源を入力する必要があります。
 詳細については、ボードのドキュメントを参照してください。
(5)ファームウェアの入手
 まず、最新の MicroPython ファームウェアの
 .bin ファイルをダウンロードして、ESP32 デバイスにロードします。
 ファームウェアは MicroPython ダウンロードページ からダウンロードできます。
 ここには、3つの主要な選択肢があります:
 ・安定ビルド版ファームウェア
 ・毎日ビルド版ファームウェア
 ・SPRAM サポート付き毎日ビルド版ファームウェア
(6)MicroPython を使い始めたばかりの方には、
 安定版ファームウェアビルドをお勧めします。
--------------------------------------------------------------------------------
`▲

%323:miniconda3」の紹介
`▼
--------------------------------------------------------------------------------https://www.anaconda.com/products/individual/installation-success?source=win_installer
--------------------------------------------------------------------------------
`▲

%324:Spyder(Python3.7)」の画面の紹介
`▼
--------------------------------------------------------------------------------
「コンソール1/A」のコピー
--------------------------------------------------
Python 3.7.9 (default, Aug 31 2020, 17:10:11) [MSC v.1916 64 bit (AMD64)]
Type "copyright", "credits" or "license" for more information.

IPython 7.19.0 -- An enhanced Interactive Python.
In[1]:2+3
Out[1]: 5
In[2]:x=2
In[3]:y=7
In[4]:x*y
Out[4]: 14
In[5]:
--------------------------------------------------
--------------------------------------------------------------------------------
`▲

%325:「Tinypy_Python入門資料」の紹介
`▼
--------------------------------------------------------------------------------
(0)「tinypython document」で検索
(1)参考資料
 ①https://livebook.manning.com/book/tiny-python-projects/welcome
 ②https://www.manning.com/books/tiny-python-projects

(2)「(1)①」からの引用/*〔この本を読み終えたら、次のことができるはずです。★〕*/★https://drive.google.com/file/d/1SMRS_c1xss2yiD6Cv0dAew00wQA_25D8/view?usp=sharing /*「(1)②」の「料金表」*/

・コマンドラインPythonプログラムを作成して実行する
・プログラムへの引数を処理する
・プログラムと関数のテストを作成して実行します
・文字列、リスト、辞書などのPythonデータ構造を使用する
・プログラムにテキストファイルの読み取りと書き込みを行わせる
・正規表現を使用してテキストのパターンを見つける
・ランダム性を使用および制御して、プログラムを予期しない動作にする
・「コードはパズルです。他のゲームと同じように、ゲームです。」
--------------------------------------------------------------------------------
`▲

%326:「miniconda3」試用例(改行すると行間が空く)`▼

%326:「miniconda3」試用例`▼

--------------------------------------------------------------------------------
(0)次行のメッセージは割愛
 Python 3.7.7 (tags/v3.7.7:d7c567b08f, Mar 10 2020, 10:41:24)・・・
 Type "help", "copyright", "credits" or "license()" for more information.
(1)「式の計算」
------------------------------------------------------------
>>> 2+3
5
>>> x=2
>>> y=3
>>> X+y
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    X+y
NameError: name 'X' is not defined
>>> x+y
5
>>>

------------------------------------------------------------
(2)「for文」
------------------------------------------------------------

------------------------------------------------------------
(3)(4)()

--------------------------------------------------------------------------------
`▲EOF(@L1Q)


2021年1月12日火曜日

Python8暫定仕様(3)

「OctalPython」作成のための断片的備忘録です.
/*背景色は(茶: 編集・確認中; 灰色: 確認済; 緑: 非慣用記法; 白色: 初期化済)*/
/*「」は定義行のみ(他ではシアン).「」の語句があるパラグラフは「IDも」*/

%830:Python8(3)/*〔修正案〕*/
`▼
--------------------------------------------------------------------------------
(0)まず「Python8(2)」の修正を復習・変更する./*〔【(1)①】の実装が目標〕*/
 「(□★)」は修正の要点;「(□☆)」は変更案
(1)参考資料/*〔「Python7」のコピーに加筆〕*/
 ①「整数で考える剰余類(1)」  @https://www.blogger.com/blog/post/edit/6943714883075862421/3176120039988210411
 ②「とほほのPython入門」@http://www.tohoho-web.com/python/
 ③「組み込み関数」@https://docs.python.org/ja/3/library/functions.html
 ④【[_Trial-1]】  @https://www.blogger.com/blog/post/edit/6859150935899261916/7184207965405872964
 ⑤「WILDの処理系」/*【[%11].(1)④】*/
@https://drive.google.com/file/d/1191Ev62Uo9yha0w87Kl5A01DsVCP7e-x/view?usp=sharing
 ⑥【[_Trial-14]】
  ・%E11:資料の参照
  ・%E2:[Trial_□]のパラグラフに関するメモ
  ・%E3:行番号の付加
(2)トークン「□」を「`□_」と明示して字句解析を容易にする.
 ①「'_'」の末尾に1個以上の「' '」付加してもよい./*〔途中改行不可〕*/
  /*〔Python7 で使えない文字「$」,「?」,「`」も使用〕*/
 ②文字列「`"□"_」を「"□"_」と略記してもよい.
 ③「'□'」はASCIIの1文字の16進表示./*〔「'0D'」=「char(13)」 〕*/
(3)行番号を行頭から48文字目の '#' の後に置く
  ①「OctalPython」の行番号は奇数桁の8進数./*【[%E3](2)③.[Trial_14]】*/
(4)【[%11].[Trial_1]】/*「WilD.pdf」*/の記号の表現適宜流用する
(5★)「OctalPython」ではの8進数を奇数桁で表示して先頭に「&」を付加する.
  /*〔「Python8」では奇数桁にして「&01234_」=「"&01234"_」〕*/
(5☆)「OctalPython」では奇数桁の8進数「□」を「&□_」で表示する.
(6)「str8('abc\n')」を「line8('abc')」と略記.
 ①「block8(\9002\9line8('abc'))」は
  ブロック内の2行目が「str8('abc\n')」であることを明示.
 ④ブロック内の行数を「&777_以下」に限定/*「末尾に空白行」*/
(7)「str9('ab\9embeded\9c\ndef\n')」の「\9embeded\9」はコメント
(8)「Decimal クラス」の概要
https://docs.python.org/ja/2.7/library/decimal.html
・9.4.1. クイックスタートチュートリアル
 ①普通、 decimal を使うときには、モジュールを import し、
  現在の演算コンテキストを getcontext() で調べ、
  必要なら、精度、丸め、有効なトラップを設定します:
 ②Decimal インスタンスは、整数、文字列、浮動小数点数、またはタプルから構成可能。
 ③新たな Decimal の有効桁数は入力の桁数だけで決まります。
  演算コンテキストにおける精度や値丸めの設定が影響するのは算術演算の間だけです。
 ④decimal はほとんどの場面で Python の他の機能とうまくやりとりできます。
  decimal 浮動小数点小劇場 (flying circus) をお見せしましょう:
 ⑤いくつかの数学的関数も Decimal には用意されています:
 ⑥quantize() メソッドは位を固定して数値を丸めます。
  このメソッドは、金融アプリケーションで便利です:
 ⑦前述のように、 getcontext() 関数を使うと現在の演算コンテキストにアクセスでき、
  設定を変更できます。ほとんどのアプリケーションはこのアプローチで十分です。
 ⑧decimal モジュールでは、すぐ利用できる二つの標準コンテキスト、
  BasicContext および ExtendedContext を提供しています。
  前者はほとんどのトラップが有効になっており、とりわけデバッグの際に便利です:
・9.4.2. Decimal オブジェクト
 ①class decimal.Decimal([value[, context]])
  value は整数、文字列、タプル、 float および他の Decimal オブジェクトにできます。
  value を指定しない場合、 Decimal('0') を返します。
  value が文字列の場合、先頭と末尾の空白を取り除いた後には
  以下の 10進数文字列の文法に従わなければなりません:
 ②10進浮動小数点オブジェクトは、 float や int のような
  他の組み込み型と多くの点で似ています。
  通常の数学演算や特殊メソッドを適用できます。
 ③ Decimal オブジェクトはコピーでき、
  pickle 化でき、print で出力でき、辞書のキーにでき、集合の要素にでき、
  比較、保存、他の型 (float や long) への型強制を行えます。
 ④10進オブジェクトの算術演算と整数や浮動小数点数の算術演算には違いがあります。
  10進オブジェクトに対して剰余演算を適用すると、
  計算結果の符号は被除数 の符号と一致します:
 ⑤整数除算演算子 // も同様に、実際の商の切り捨てではなく
  (0に近付くように丸めた) 整数部分を返します。
  そうすることで通常の恒等式 x == (x // y) * y + x % y が保持されます:
 ⑥演算子 % と演算子 // は (それぞれ)
  仕様にあるような 剰余 操作と 整数除算 操作を実装しています。
 ⑦Decimal オブジェクトは一般に、算術演算で
  浮動小数点数と組み合わせることができません。
(9)「(8)」の仕様は気にせず「class.Octal.Py8」を考えます.
 ①「x == gamma(x) + delta(x)」は必須./*【[9.4.2].(8)】*/
 ②「`&81_ := `&10_」,「`&83_ := `&1000_」と定義したい.
 ③「Python8」で扱う実数は固定小数点のみ./*「Δ(3 / 2) == 1.4」*/
 ④「8進数」表示は論理演算が容易.
  /*【[%820](5)③】:〔プログラミング教育に重宝〕*/
 ⑤「ビット演算子(~, &, |, ^, <<, >>)」/*【[%830](1)②】*/
  の代わりに次の演算子を用いる./*〔各行はデフォルトのフォント〕*/
  ・「`not,_ &□_」:=「~ &□_」
  ・「&□1_  `.and,_ &□2_」:=「&□1_  &□2_」
  ・「&□1_ `.or_ &□2_」:=「&□1_ | &□2_」
  ・「&□1_ `.xor,_ &□2_」:=「&□1 ^ &□2」
  ・「&□1_  `.shift, - (_&3_)」==「&□1_ << (&3_)」
  ・「&□1_ `.shift,_ &3_」==「&□1_ >> (&3_)」
 ⑥「&□_」を「2の補数★」表示の整数と考える.
  ★https://en.wikipedia.org/wiki/Two%27s_complement
  ☆https://en.wikipedia.org/wiki/Two's_complement
  ・
-------------------------------------------------------------------------------
`▲「Blogger」では「スクリプトをCourier□★」で表示★https://www.blogger.com/blog/post/edit/6859150935899261916/7173240099006907548

%837:Note in English
`▼
--------------------------------------------------------------------------------
(0)Examples of Octal_Python scripts are shown.
(1)Ex.1/*〔copied from [%817]〕*/
------------------------------------------------------------
  def Delta(k, m):
      val = k % m
      return val
  print(Delta(5, 3))
------------------------------------------------------------
 ①対話モードでは、help() で様々なオブジェクトのヘルプを参照することができます。
  「http://www.tohoho-web.com/python/start.html#interactive
 ②「Δ(5 / 3) == 2 / 3 == &2_ / &3_ =="1.5"」;「m * Δ(k / m) == k
(2)Ex.2/*〔copied from [%812]〕*/
 ①[%812](5)で述べた関数「`isPrime(63)_」の実装を「エラトステネスの篩★」で考える
  ☆https://cloud.google.com/translate/docs?hl=ja/ /*〔Google_translation〕*/
  ★https://ja.wikipedia.org/wiki/エラトステネスの篩
  ☆https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
 ②「make lists as follows」
  list_p = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,
      53,59,61,67,71,73,79,83,89,97]
   list_f = [63,]
  ★https://ja.wikipedia.org/wiki/素因数分解
  ☆https://en.wikipedia.org/wiki/Integer_factorization

 ③「list_p[19] > 63」だから「for k in range(1, 19)」で
  「list_p[k] == 63」となる「k」が存在しないので「63」を素因数分解する.
 ④「for k in range(1, 19)」で「y == 63 / list_p[k]」となる「y」を
  「list_f」に追加.
 ⑤「list_f == [7, 3, 3,]」が「63」の素因数分解.
 ⑥「(2)①」の「x」が「x * x > 10000」のときは
  「print("This method is unavailable!")」,「return」を実行
  ★https://mathtrain.jp/sosuu
  ★https://ja.wikipedia.org/wiki/素数の一覧
  ☆https://en.wikipedia.org/wiki/List_of_prime_numbers
(3)「演算子 //」の関連資料
 ①「https://docs.python.org/ja/3/library/decimal.html
    /*〔IBM による汎用十進演算仕様:割愛〕*/
  Decimal オブジェクト
  整数除算演算子 // も同様に、実際の商の切り捨てではなく
   (0に近付くように丸めた) 整数部分を返します。
  そのため通常の恒等式 x == (x // y) * y + x % y が維持されます:
 ②「https://www.javadrive.jp/python/num/index2.html#section1」からの引用.
  演算子の // は商の整数部分だけを取得します。
  ただし浮動小数点数に対する演算の場合は結果は浮動小数点数となります。
  丸め方は整数の場合と同じく負の無限大の方向に丸められます。
  例えば商の結果が 7.56 であれば 7.0 、 -4.785 であれば -5.0 となります。
 ③「https://docs.python.org/3/library/decimal.html」からの引用
  ・「Chrome」は原文を翻訳するので「Edge」で閲覧して「①」を確認.
  The integer division operator // behaves analogously,
  returning the integer part of the true quotient (truncating towards zero)
  rather than its floor, so as to preserve the usual identity
  ・前世紀のコンピュータは絶対値切り捨てを採用していた
   x == (x // y) * y + x % y:
  ----------------------------------------
  >>> (-7) % 4
  1
  >>> Decimal(-7) % Decimal(4)
  Decimal('-3')
  ----------------------------------------
  >>> -7 // 4
  -2
  >>> Decimal(-7) // Decimal(4)
  Decimal('-1')
  ----------------------------------------

 ・「confirmation」
  ----------------------------------------
  (-7) % 4 == -3
 ・The reason why「(-7) % 4」exists in「(x // y) * y + x % y」is explained by
  (-7) / 4 == -1.75 == (-2 + 1) - 0.75 == (-1) + (-3 / 4)
  ----------------------------------------

 ・「generalization」/*〔「x > 0」,「y > 0」〕*/
  ----------------------------------------
  x / y == Γ(x / y) + Δ(x / y)  /*「y * Δ(x / y) == x」*/
  x / y == Γ(x / y) + Δ(x / y)
  (-x) / y == Γ((-x) / y)) + 1 - (1 - Δ((-x) / y)) 
  ----------------------------------------
--------------------------------------------------------------------------------
`▲パラグラフ内を編集すると改行が乱れる(禁:編集)

%839:EOF(@L1G)

2020年10月18日日曜日

Python3(1)

%310:Python3(1)
/*背景色は(茶: 編集・確認中; 灰色: 確認済; 緑: 非慣用記法; 白色: 初期化済)*/
/*「」は定義行のみ(他ではシアン).「」の語句があるパラグラフは「IDも茶」*/
【[%311](3)】を追加

%311:参考資料
`▼
--------------------------------------------------------------------------------

(0)「python.org」の入門用ドキュメントの紹介
 ①「Formal_Python」は長いので「Python3」と略記.
 ②このブログではスクリプトを「Courier」で表示
  ・等幅フォントだから見落とし難く背景色の設定も容易
 ②http://www.tohoho-web.com/python/
(1)「python.org」のドキュメント

 https://docs.python.org/ja/3/tutorial/

 ③https://docs.python.org/ja/3/tutorial/introduction.html#

 ④https://docs.python.org/ja/3/tutorial/controlflow.html

 ⑤https://docs.python.org/ja/3/tutorial/datastructures.html

 ⑥https://docs.python.org/ja/3/tutorial/modules.html

 ⑦https://docs.python.org/ja/3/tutorial/inputoutput.html

 ⑧https://docs.python.org/ja/3/tutorial/errors.html

 ⑨https://docs.python.org/ja/3/tutorial/classes.html

 ⑩https://docs.python.org/ja/3/tutorial/stdlib.html

 ⑪https://docs.python.org/ja/3/tutorial/stdlib2.html

 ⑫https://docs.python.org/ja/3/tutorial/venv.html

 ⑬https://docs.python.org/ja/3/tutorial/whatnow.html

 ⑭https://docs.python.org/ja/3/tutorial/interactive.html

 ⑮https://docs.python.org/ja/3/tutorial/floatingpoint.html

 ⑯https://docs.python.org/ja/3/tutorial/appendix.html


 ⑰https://docs.python.org/ja/3/reference/index.html

 ⑱https://docs.python.org/ja/3/library/functions.html

 ⑲https://ja.wikipedia.org/wiki/Python#歴史

(2)Python環境構築ガイド > Anaconda のインストール
 ①https://www.python.jp/install/anaconda/conda.html
Anaconda には conda コマンドがインストールされており、
パッケージのインストールや、実行環境の作成・切り替えなどを行います。
Anacondaの実行環境は Anaconda-Navigator でも操作できますが、
ここでは conda コマンドの使い方を紹介します。
 ②https://310ch.net/work/analytics/python-miniconda
 ③https://qiita.com/dddmm/items/f91adea7901052efdf6a

(3)使用不能文字に関するメモ
 ①[%26](6).[Trial_2]
  ・これらの文字(「$」,「?」,「`」)が文字列リテラルやコメントの外にある場合、
   無条件にエラーとなります:
 ②[%292](3).[Trial_2]/*「TinyPython」*/
  ・tinypyは64kのコードでのPythonの最小限の実装です
 ③[%291](6).[Trial_2]/*「OctalPython」*/
 ・「BabyPython」や「NanoPython」も既存だから「OctalPython」で回避.
 ④「https://ja.wikipedia.org/wiki/Python
  #1:プログラマーのグローバルコミュニティは、無料のオープンソース
   リファレンス実装であるCPythonを開発および保守している 。
  #2:非営利団体であるPythonソフトウェア財団は、
   Python【とCPython?】の開発のためのリソースを管理・指導している。
 ⑤「OctalPython」も「④#2」を断念し「④#1」として「TinyPython」に準拠する。
--------------------------------------------------------------------------------
`▲①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳

%312:字句解析`▼

--------------------------------------------------------------------------------
(1)形式ばらない Python の紹介/*[%61131]=[%611]①(3.1)*/

を入力すると、その結果が表示されます。
演算子は他のほとんどの言語と同じように動作します
丸括弧をグループ化に使うこともできます。
浮動小数点を完全にサポートしています。
文字列を記述する方法は複数あり、単引用符 で囲むか、二重引用符で囲みます。
 結果はどちらも同じ文字列になります。
・引用符は、\ でエスケープできます。
・\ に続く文字を特殊文字として解釈されたくない場合は raw strings が使えます
--------------------------------------------------------------------------------
`▲

%313:構文解析`▼
--------------------------------------------------------------------------------
(1)単文
(2)if 文/*【[%61141]:[%611](4.1)】*/
(3)for文/*【[%61141]:[%611](4.2)】*/
(4)break文,continue文とelse節/*【[%61144]:[%611](4.4)】*/
(5)pass文/*【[%61145]:[%611](4.5)】*/
(6)関数定義/*【[%61147]】*/
(7)デフォルトの引数値/*【[%611471]】*/
(8)キーワード引数/*【[%611472]】*/
(9)特殊なパラメータ/*【[%611473]】*/
(A)データ構造/*【[%6115]】*/
(B)リスト型/*【[%61151]】*/
 ・リストをスタックとして使う
 ・リストをキューとして使う
 ・リストの内包表記
 ・ネストしたリストの内包表記
(C)del文/*【[%61152]】*/
(D)タプルとシーケンス/*【[%61153]】*/
(E)集合型/*【[%61154]】*/
(F)辞書型/*【[%61155]】*/
(G)ループのテクニック/*【[%61156]】*/
(H)条件への補足/*【[%61157]】*/
(I)シーケンスとその他の型の比較/*【[%61158]】*/
(J)クラス/*【[%6119]】*/
(K)名前とオブジェクト/*【[%61191]】*/
(L)スコープと名前空間/*【[%61192]】*/
(M)クラス初見/*【[%61193]】*/
(O)注意点/*【[%61194]】*/
(P)継承/*【[%61195]】*/
(Q)イテレータ/*【[%61198]】*/
(R)ジェネレータ/*【[%61199]】*/
--------------------------------------------------------------------------------
`▲

%314:解釈実行`▼
--------------------------------------------------------------------------------
(1)モジュール/*【[%6116]】*/
(2)モジュールをスクリプトとして実行する/*【[%611611]】*/
(3)モジュール検索パス
(4)コンパイルされた Python ファイル
(5)標準モジュール
(6)dir() 関数/*【[%61163]】*/
(7)入力と出力/*【[%6117]】*/
(8)出力のフォーマット/*【[%61171]】*/
 ・フォーマット済み文字列リテラル
 ・文字列の format() メソッド
 ・文字列の手作業でのフォーマット
(9)ファイルの読み書き/*【[%61172]】*/
 ・ファイルオブジェクトのメソッド
(A)エラーと例外
(B)構文エラー/*【[%61181]】*/
(C)例外/*【[%61182]】*/
 ・例外を処理する/*【[%61183]】*/
 ・例外を送出する/*【[%61184]】*/
 ・例外の連鎖/*【[%61185]】*/
 ・ユーザー定義例外/*【[%61186]】*/
--------------------------------------------------------------------------------
`▲
%315:補遺`▼
--------------------------------------------------------------------------------
(1)Python インタプリタを使う/*【[%61131]】*/
・どのディレクトリに Python インタプリタをインストールするかは
 インストール時に選択できる
(2)関数定義への補足
 ・任意引数リスト/*【[%611474]】*/
 ・任意引数リストのアンパック/*【[%611475]】*/
 ・ラムダ式/*【[%611476]】*/
(3)コーディングスタイル/*【[%61148]】*/
(4)パッケージ/*【[%61164]】*/
 ・パッケージから * を import する/*【[%611641]】*/
 ・パッケージ内参照/*【[%611642]】*/
 ・複数ディレクトリ中のパッケージ/*【[%611643]】*/
(5)標準ライブラリ/*【[%611A]】*/
 ・OS へのインターフェイス/*【[%611A1]】*/
 ・ファイルのワイルドカード表記/*【[%611A]】*/
 ・コマンドライン引数/*【[%611A3]】*/
 ・数学/*【[%611A6]】*/
 ・インターネットへのアクセス/*【[%611A7]】*/
 ・日付と時刻/*【[%611A8]】*/
(6)標準ライブラリ(2)/*【[%611B]】*/
 ・リスト操作のためのツール/*【[%611B7]】*/
 ・10進浮動小数点演算/*【[%611B8]】*/
(7)浮動小数点演算,その問題と制限/*【[%611F]】*/
(8)付録/*【[%611G]】*/
--------------------------------------------------------------------------------
`▲

%316:「試用録(□)へのリンク」`▼
--------------------------------------------------------------------------------
 (1)https://www.blogger.com/blog/post/edit/6859150935899261916/7184207965405872964
 (2)https://www.blogger.com/blog/post/edit/6859150935899261916/5264098732205754371
 (3)https://www.blogger.com/blog/post/edit/6859150935899261916/411641851818640792
 (4)https://www.blogger.com/blog/post/edit/6859150935899261916/7092187426506751597
 (5)https://www.blogger.com/blog/post/edit/6859150935899261916/7119368520705050736
 (6)https://www.blogger.com/blog/post/edit/6859150935899261916/370039304647117735
 (7)https://www.blogger.com/blog/post/edit/6859150935899261916/5267093833185413880
 (8)https://www.blogger.com/blog/post/edit/6859150935899261916/1852221391872171709
 (9)
(10)https://www.blogger.com/blog/post/edit/6859150935899261916/1852221391872171709
(11)https://www.blogger.com/blog/post/edit/6859150935899261916/3779679508729485873
(12)https://www.blogger.com/blog/post/edit/6859150935899261916/8454306409348905521
(13)https://www.blogger.com/blog/post/edit/6859150935899261916/8240083249656951464
(14)https://www.blogger.com/blog/post/edit/6859150935899261916/4867640993038865114
(15)https://www.blogger.com/blog/post/edit/6859150935899261916/3099915323042753384
(16)
(17)
(18)https://www.blogger.com/blog/post/edit/6859150935899261916/3264675642890135832
--------------------------------------------------------------------------------
`▲

%317★:「ASCII_Python」用のメモ`▼

--------------------------------------------------------------------------------
(0)趣旨:「with all the ASCII characters, including"$","?" and "`"」
(1)参考資料
 ①[%61]@https://oshino3.blogspot.com/2020/05/python6.html
(2)非慣用トークンには先頭に「`」を付加して末尾に1個以上の半角スペースを付ける.
 ・「Courier」は等幅フォントだから見落としにくい.
  /*【[%61](2)①】のようにオプションで左端のスペースをシアンにする」*/
(3)
(4)
--------------------------------------------------------------------------------
`▲

%318★:「Octal_Python」用のメモ
`▼
--------------------------------------------------------------------------------
(0)趣旨:「IDLE」準拠に拘らない。/*「(4)②」*/
(1)参考資料
 ①[Tutr_2.2.1]@https://docs.python.org/ja/3/tutorial/interpreter.html#source-code-encoding
 https://docs.python.org/ja/3/tutorial/
 ②「ピークの定理(17)」@https://oshino3.blogspot.com/2020/05/17.html
(2)「(1)①」からの引用
 ・デフォルトでは、Python のソースコードは UTF-8 でエンコードされているものとして扱われます。
  UTF-8 では、世界中のほとんどの言語の文字を、同時に文字列リテラル、識別子、コメントなどに書けます。
 ・ただし、標準ライブラリは識別子に ASCII 文字のみを利用していて、
  その他のポータブルなコードもその慣習に従うべきです。
 ・それらの文字を正しく表示するためには、エディターはそのファイルが UTF-8 である事を識別して、そのファイルに含まれている文字を全てサポートしたフォントを使わなければなりません。
(3)「(1)②」の【%2(3)】からの引用
 ①{擬似コードによる表現}@https://blog.goo.ne.jp/bonsai19/e/bb51b0440ad573d19b28a4fd73041416
 /*「TeXに準じた記法の背景色は Cyan」as「x^{3} - 1 = 0」,「A^{(i, j)}」*/
 ②[_数学記号の表]@https://ja.wikipedia.org/wiki/数学記号の表
 ③「+」「-」「*」「/」は「C言語」の算術演算子と同じ./*「%」は使わない */
 ④比較演算子には「<」,「≦」,「=」,「≧」,「>」,「≠」を使う.
 /*背景色は「Cyan」*/
 ④非慣用記法は本文中に「□ :=」で定義する./*「□」の背景色は「Green」*/
(4)「(1)②」の数式の例/*「'∠'はJISの数学記号」*/
 ①「W`(K' / M) = cos`( ∠`(K' / M)) + i_ * sin( ∠(K' / M) )」
 ②「IDLE★」is an「idle」importer of Library functions だから気にしない.
  ★https://ja.wikipedia.org/wiki/IDLE_(Python)
  /*〔マルチウィンドウ型のテキストエディタである。〕*/
  /*〔「JDK★」と類似の「PDK」の方がよい?〕*/
  ★http://e-words.jp/w/JDK.html
 ③「C言語」の標準関数を用いて「IDLE」を実装するのが常道?
 ④「MicroPython★」 is not idle !
  ★https://ja.wikipedia.org/wiki/MicroPython
--------------------------------------------------------------------------------
`▲

%319:「Kanji_Python」用のメモ
`▼
--------------------------------------------------------------------------------
【[%I11]①】より【[%I11]③】に準拠した「IDE」を各国が自作すればよい.
 ①国際識別記号  https://ja.wikipedia.org/wiki/%E5%9B%BD%E9%9A%9B%E8%AD%98%E5%88%A5%E8%A8%98%E5%8F%B7
 ②国名コード/*「e-mail」*/   https://ja.wikipedia.org/wiki/%E5%9B%BD%E5%90%8D%E3%82%B3%E3%83%BC%E3%83%89
 ③IOCコード一覧/*「一番分かりやすい」*/   https://ja.wikipedia.org/wiki/IOC%E3%82%B3%E3%83%BC%E3%83%89%E4%B8%80%E8%A6%A7
---------------------------------------------------------------------------------
`▲

%31A:EOF(@L1G)

2020年9月9日水曜日

Python9暫定仕様(1)

%P910:Python9暫定仕様(1)
  https://bonsai-juku.blogspot.com/2020/08/python9.html
`▼
--------------------------------------------------------------------------------
(0)「KanjiPython」は長いので「Python9」に統一.
  /*実体は既存資料への加筆*/
(1)参考資料
 ①【[Trial-1]】@「Python」試用録(1)」@
  https://oshino3.blogspot.com/2020/05/python.html
 ②【[Trial-5]】「if文による条件分岐 (2/2)」@
  https://oshino3.blogspot.com/2020/05/python5_48.html
 ③【[Trial-6]】「for文による繰り返し処理 (1/3)」@
  https://oshino3.blogspot.com/2020/05/python6.html
 ④【[Trial-14]】「Python」試用録(14)」@
  https://oshino3.blogspot.com/2020/06/python14.html
  ・%E11:資料の参照
  ・%E2:[Trial_□]のパラグラフに関するメモ
  ・%E3:行番号の付加
  ・%E4:使用不能文字対策
 ⑤【[Trial-18]】「Python」試用録(18)」@
  https://oshino3.blogspot.com/2020/07/python18.html
(2)【[%E2](1)③.[Trial_14]】
 ・これらの文字が文字列リテラルやコメントの外にある場合、無条件にエラーとなる
  /*〔これらの文字「$」,「?」,「`」の対策が不可欠〕*/
(3)【[%E3](2)③.[Trial_14]】
 ・行頭ではなく次のようにしたい/*「'#'を行頭から48文字目に」*/
  ①「OctalPython」の行番号は奇数桁の8進数
  ②末尾の1桁の8進数は行末でのレベル
  ③ファイルの全角スペースはすべて半角スペース2個と置換
  ④「OctalPython」のコンソール画面(2枚)は8×16文字
   一方で表示し,他方をバックグラウンドで編集.
(4)【[%11].[Trial_1]】/*「WilD.pdf」*/の記号の表現
 ①「 1 ?」は「0」,「1」のいずれかの数.
 ②「Py8.num8(177)」は8進数「177」を超えない非負の整数(自然数)のいずれか
  ・【[%61](2)[Trial_6]】の非決定性構文で使用./*〔(1)②〕*/
 ③「$」に「self」を使う
 ④「read,.」,「write,.」に「input()」,「print()」を使う.
(5)「(2)③」の「 1 ?」を「Py8.num8(1)」と表記
 ①「 1 ?」は「0」,「1」のいずれかの数.
 ②「Py8.num8(177)」は8進数「177」を超えない非負の整数(自然数)のいずれか
  ・【[%61](2)[Trial_6]】の非決定性構文で使用./*〔(1)②〕*/
(6)【[%21](0).[Trial_2]】の「"abcdefg"」を「Py8.str8('abcdefg')」と表記
(7)「Py8.str8('abc\n')」を「Py8.line8('abc')」と略記.
 ①「Py8.block8(\9002\9line8('abc'))」は
  ブロック内の2行目が「str8('abc\n')」であることを明示.
 ②行頭のインデント量と「\9002\9」から【[%E3](2)】のコンソール画面を作成.
 ③「Py8.str8('\9002\9abc\n\9003\9def\n')」を
  「Py8.line8('\9002\abc')」「Py8.line8('\9003\def')」と略記.
 ④ブロック内の行数を「511以下」に限定/*「末尾に空白行」*/
(8)「Py8.str9('ab\9embeded\9c\ndef\n')」の「\9embeded\9」はコメント
 ①インタプリタは「(7)②」の行末の6文字とコメントを削除したファイルを解釈実行
  /*「原稿の'\t'を'#\t'で置換」*/
--------------------------------------------------------------------------------
`▲
%911:Documents by Python.org
`▼
--------------------------------------------------------------------------------
 ①https://docs.python.org/ja/3/tutorial/
 ②https://docs.python.org/ja/3/library/functions.html
 ③https://docs.python.org/ja/3/glossary.html#glossary
--------------------------------------------------------------------------------
`▲【[%I1].[Trial-18]】からの引用

%912:字句解析
`▼
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
`▲

%913:構文解析
`▼
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
`▲

%914:解釈実行
`▼
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
`▲

%915:補遺
`▼
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
`▲

%919:EOF

2020年9月7日月曜日

%P710:Python7暫定仕様(1)

%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で文字列を分割(区切り文字、改行、正規表現、文字数)
(6)リスト・タプル・辞書
・とほほの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/」*/
 ⑤@「Anaconda IDE★」の使い方 
「★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」で手動で修正する.
  --------------------------------------------
 ①「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)

2020年8月8日土曜日

%P810:Python8暫定仕様(1)

%P810:Python8暫定仕様(1)
「OctalPython」作成のための断片的備忘録です.
/*背景色は(茶: 編集・確認中; 灰色: 確認済; 緑: 非慣用記法; 白色: 初期化済)*/
/*「」は定義行のみ(他ではシアン).「」の語句があるパラグラフは「IDも」*/

%811:Python8(1)/*〔原案〕*/
`▼
--------------------------------------------------------------------------------
(0)「Octal_Python」は長いので「Python8」と略称.
・「Python7」に準拠して拡張仕様を検討する
(1)参考資料/*〔「Python7」のコピーに加筆〕*/
 ①【[Trial-1]】@「Python」試用録(1)」@
  https://oshino3.blogspot.com/2020/05/python.html
 ②【[Trial-5]】「if文による条件分岐 (2/2)」@
  https://oshino3.blogspot.com/2020/05/python5_48.html
 ③【[Trial-6]】「for文による繰り返し処理 (1/3)」@
  https://oshino3.blogspot.com/2020/05/python6.html
 ④【[Trial-14]】「Python」試用録(14)」@
  https://oshino3.blogspot.com/2020/06/python14.html
  ・%E11:資料の参照
  ・%E2:[Trial_□]のパラグラフに関するメモ
  ・%E3:行番号の付加
  ・%E4:使用不能文字対策
 ⑤【[Trial-18]】「Python」試用録(18)」@
  https://oshino3.blogspot.com/2020/07/python18.html
 ⑥【_tutorial】「パッケージ」@
  https://docs.python.org/ja/3/tutorial/modules.html#packages
 ⑦「Python7暫定仕様(1)」@
(2)「(1)④.E4
 ・これらの文字が文字列リテラルやコメントの外にある場合、無条件にエラーとなる
  /*〔これらの文字「$」,「?」,「`」の対策が不可欠〕*/
(3)「(1)④.E3」
 ・行頭ではなく次のようにしたい/*「'#'を行頭から48文字目に」*/
  ①「OctalPython」の行番号は奇数桁の8進数
  ②末尾の1桁の8進数は行末でのレベル
  ③ファイルの全角スペースはすべて半角スペース2個と置換
  ④「OctalPython」のコンソール画面(2枚)は8×16文字
   一方で表示し,他方をバックグラウンドで編集.
(4)[%11].[Trial_1]/*「WILD.pdf」*/の記号の表現/*【[%11]①】*/
 ①「 1 ?」は「0」,「1」のいずれかの数.
 ②「177?」は8進数「177」を超えない非負の整数(自然数)のいずれか
  ・【[%61](2)[Trial_6]】の非決定性構文で使用./*「(1)②」*/
 ③「$」に「self」を使う
 ④「read,.」,「write,.」に「input()」,「print()」を使う.
 ⑤「"1234"」は10進数/*〔「Python7」と同じ〕*/
(5)以下では奇数桁の8進数の先頭に「&」を付加して記述
  /*〔Python8では奇数桁にして「&01234_」=「"&01234"」=`'&01234'_」〕*/
 ①「 &1_?」は「0」,「1」のいずれかの数./*〔「?」はWILDの後置演算子〕*/
 ②「&177_?」は8進数「&177_」を超えない非負の整数(自然数)のいずれか
 ③「8進数」表示は論理演算が容易./*〔プログラミング教育に重宝〕*/
(6)【[%21](0).[Trial_2]】の「"abcdefg"」は文字列/*〔"12345"は10進数〕*/
 ①「`'abcdefg'_」=「"abcdefg"」/*「⑦(1)」*/
  /*〔①トークン「□」の先頭に「'`'」を置き末尾に複数個の
   「' '」を付加して左端の「' '」を「'_'」で置換〕*/
(7)「str8('abc\n')」を「line8('abc')」と略記.
 ①「block8(\9002\9line8('abc'))」は
  ブロック内の2行目が「str8('abc\n')」であることを明示.
 ②行頭のインデント量と「\9002\9」から[%E3](2)のコンソール画面を作成.
 ③「str8('\9002\9abc\n\9003\9def\n')」は
  「line8('\9002\abc')+line8('\9003\def')」と同じ.
 ④ブロック内の行数を「&777以下」に限定./*「末尾に空白行」*/
(8)「str9('ab\9embeded\9c\ndef\n')」の「\9embeded\9」はコメント
 ①インタプリタは「(7)②」の行末の6文字とコメントを削除したファイルを解釈実行
  /*「原稿の'\t'を'#\t'で置換」*/
 ②「FontTest★」
(9)[%82]以降は「177?」を「&177?」と表記./*【%8162】=【[%816](2)】*/ ①「`'0D'_」=「char(13)」=「&15」.
   /*〔【[%8101721]】=【[%810](1)⑦(2)①】〕*/
--------------------------------------------------------------------------------
`▲「□」内は「Courier」/*〔原稿では「SJIS」〕*/

%812:字句解析
`▼
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
`▲

%813:構文解析
`▼
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
`▲

%814:解釈実行
`▼
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
`▲

%815:補遺
`▼
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
`▲

%816:【[_Trial-14]】/*「%E3:行番号の付加」*/からの部分コピー
`▼
--------------------------------------------------------------------------------
(1)以下の数字はすべて8進数/*〔「8」(="8")は10進数〕*/
----------------------------------------
number = int(number) \t                     #001.1
                                            #002.1
if number % 3 == 0: \t                      #003.1
print('Fizz')                               #004.2
elif number % 5 == 0: \t                    #005.1
print('Buzz')                               #006.2
elif number % 17 == 0: \t                   #007.1
print('FizzBuzz') \t                        #100.2
else: \t                                    #101.1
print(number) \t                            #102.2
----------------------------------------
・「Nexus7」では「Courier」で「77字/行」は無理なので「60文字」に変更
 /*〔末尾の「\n」を除いて「77字」以下〕*/
①「OctalPython」の行番号は奇数桁の8進数
②末尾の1桁の8進数は行末でのレベル
③ファイルの全角スペースはすべて半角スペース2個と置換
④「OctalPython」のコンソール画面(2枚)は10×20(="8*16")文字
 一方で表示し,他方をバックグラウンドで編集.
--------------------------------------------------------------------------------
(2)[%82]以降では適宜,8進数の先頭に「&」を付加して偶数桁にする
--------------------------------------------------------------------------------
`▲

%817:Note in English
`▼
--------------------------------------------------------------------------------
(0)[%□E]]corresponds to the paragraph[%□]
(1)%810:(1)③
  /*〔characters ∈ { '$', '?', '`'} are always invalid !〕*/
(2)%810:(1)②
 ・「ja」:docs in Japanese. /*〔There exists many docs by python.org.〕*/
(3)%810:(4)②/*「WILD.pdf★」*/の記号の表現
  ・「num8(177)」is expressed simply 「&177 ?」where 「?」is a WILD operater.
  ・「&177 ?」is a natural number which is not greater than「&177」. 
(4)%810:(5)③
  ・「8進数」表示は論理演算が容易./*〔プログラミング教育に重宝〕*/
   「Octal number is  convenient to teach bitwise logic operation.
  ・Decimal page number itself is not important.
(5)[%810](6)①
  ・Any token「」 is expressed as「`_ in general.
  ・「`'abcdefg'_」is abbreviated as「"abcdefg"
(6)copied from[%717]/*chars in {'.', '^', '$'} are unavailable.*/
------------------------------------------------------------
  (0)「Octal_Python」uses the following expressions 「」which are 
  ★quite different from「https://docs.python.org/ja/3/library/re.html
  ☆quite different from「https://docs.python.org/3/library/re.html
  (1)小数点'.'」に支障:「S = 5 * 5 * 3.1416
  (2)べき乗'^'」に支障:「(x + 2) * (x + 3) = x^{2} + 5 * x + 6
  (3)名前空間'$'」に支障:「class $Py8」,「class $Py9」を使いたい.
------------------------------------------------------------
--------------------------------------------------------------------------------
`▲「re」:regular expression; 「支障」:interference

%818:List of PDF-files
`▼
--------------------------------------------------------------------------------
Galois-1.pdf /*「整数で考える剰余類」*/
Galois-2.pdf /*「実数で考える巡回群」*/
Galois-3.pdf /*「複素数で考える商群」*/
--------------------------------------------------------------------------------
`▲

%819:EOF(@L18)