「Python」試用録(3)」

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

%31:[@IT_3]/*「数値と算術演算 (1/2)」*/`▼
--------------------------------------------------------------------------------
(1)「1+1」の計算
 「In[1]:『1+1』」,「Out[1]:2」.
  /*「『□』はコンソール入力」*/
(4)「W7」で「write,. 8(7) .`{1 + 1 `} 」を実行すると「2」と表示される
(5)「W7」の予約トークンを「`□ '」で明示./*「末尾に半角スペース」*/
 ①例えば「`write,. 」,「`if: 」「`& 」,「`? 
  /*「全角スペースは2個の半角スペースと置換」*/
 ②【[%221](4)①】の「8( 020 ? )」を「`8( 020 `? )'」と略記./*「`8( 020 ) = &020」*/
 ③【[%221](4)②】の「9( 020 ? )」を「`9( 020 `? )'」と略記.
(6)システム関数「`len( X )'」は文字列「X」の長さ.
 /*「X = 'World'」⇒「`len('Hello'+ X ) = 5 + `len( X )」./*「`len( X ) = 5」*/
(7)システム関数「`addr($X)'」は名前「$X」の定義行の行番号./*「行頭でなければ8進実数」*/
(8)「W7」では実数型の整数部と小数部は独立して計算する.
 ①小数部の演算結果が整数になっても整数部の値に加算しない
(9)字句解析を容易にするためにトークンの末尾に半角スペースを付加.
--------------------------------------------------------------------------------
`▲

%311:Console入力
`▼
------------------------------------------------------------
(0)「In[1]:『1+1』」,「Out[1]:2」.
(1)参考資料
 ①https://docs.python.org/ja/3/reference/index.html
 ②組み込み関数
 https://docs.python.org/ja/3/library/functions.html
 ・input([prompt])引数 prompt が存それが末尾の改行を除いて
  標準出力に書き出されます。
 ・次に、この関数は入力から 1 行を読み込み、
  文字列に変換して (末尾の改行を除いて) 返します。
 ③https://www.python-izm.com/introduction/console_input/
 ・your_name = input('>> ')/*「[prompt]='>> '」*/
 ④https://itips.krsw.biz/python-std-input/
 ・var = input("Please input variable : ")
  /*「[prompt]="Please input variable : "」*/
------------------------------------------------------------
`▲
%312:関数定義
`▼
------------------------------------------------------------
(0)「In[3]:」
  def helloworld():
    name = input('input your name: ')
    message = 'Hello '+ name + ' !'
    print(message)
(1)参考資料
 ①[@IT_12]Pythonの関数
 ②https://docs.python.org/ja/3/tutorial/controlflow.html#defining-functions
(2)「(0)」の実行結果
    input your name: World
    Hello World !
(3)これまでにprint関数とinput関数を利用してきたが、
 ①関数は「プログラマーが自由に定義」できる。
  定義した関数は、print関数などと同様に呼び出しが可能だ(6行目)。
 ②このプログラムは大きく次の2つの部分に分かれている。
(4)
------------------------------------------------------------
`▲

%313:「リスト」クラス/*「[@IT_16]」*/
`▼
------------------------------------------------------------
(0)「C」の配列は「リスト」で実装できる.
(1)https://docs.python.org/ja/3/library/functions.html#func-list
(1)class list([iterable])
 list は、実際には関数ではなくミュータブルなシーケンス型で、
 リスト型 (list) と
 シーケンス型 --- list, tuple, range にドキュメント化されています。
(2)class object
  object は全てのクラスの基底クラスです。
  これは、 Python のクラスの全てのインスタンスに共通のメソッド群を持ちます。
  この関数はいかなる引数も受け付けません。
 ①oct(x)
  整数を先頭に "0o" が付いた 8 進文字列に変換します。
  結果は Python の式としても使える形式になります。
 ②open(file, mode='r', buffering=-1, encoding=None, errors=None,
  newline=None, closefd=True, opener=None)
 ・mode はオプションの文字列で、デフォルトは 'r' で、
  読み込み用にテキストモードで開くという意味です。
 ・newline は universal newlines モードの動作を制御します (テキストモードでのみ動作します)。
  None, '', '\n', '\r', '\r\n' のいずれかです。
------------------------------------------------------------
`▲


%314:「タプル」クラス/*「[@IT_19]」*/
`▼
------------------------------------------------------------
(0)「C」の構造体は「タプル」で実装できる.
(1)class tuple([iterable])/*「組み込み関数」*/
 https://docs.python.org/ja/3/library/functions.html#func-tuple
・tuple は、実際は関数ではなくイミュータブルなシーケンス型で、
 タプル型 (tuple) と シーケンス型 --- list, tuple, range にドキュメント化されています。
(2)class type(name, bases, dict)
引数が1つだけの場合、object の型を返します。返り値は型オブジェクトで、
一般に object.__class__ によって返されるのと同じオブジェクトです。
オブジェクトの型の判定には、 isinstance() 組み込み関数を使うことが推奨されます。
これはサブクラスを考慮するからです。
(3)zip(*iterables)
それぞれのイテラブルから要素を集めたイテレータを作ります。
この関数はタプルのイテレータを返し、
その i 番目のタプルは引数シーケンスまたはイテラブルそれぞれの i 番目の要素を含みます。
このイテレータは、入力イテラブルの中で最短のものが尽きたときに止まります。
(4)単一のイテラブル引数が与えられたときは、1 要素のタプルからなるイテレータを返します。
引数がなければ、空のイテレータを返します。次と等価です:
def zip(*iterables):
    # zip('ABCD', 'xy') --> Ax By
    sentinel = object()
    iterators = [iter(it) for it in iterables]
    while iterators:
        result = []
        for it in iterators:
            elem = next(it, sentinel)
            if elem is sentinel:
                return
            result.append(elem)
        yield tuple(result)
イテラブルの左から右への評価順序は保証されています。
(5)そのため zip(*[iter(s)]*n) を使ってデータ系列を
長さ n のグループにクラスタリングするイディオムが使えます。
これは、各出力タプルがイテレータを n 回呼び出した結果となるよう、
同じ イテレータを n 回繰り返します。
これは入力を長さ n のチャンクに分割する効果があります。
zip() に続けて * 演算子を使うと、zip したリストを元に戻せます:
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zip(x, y))
>>> x == list(x2) and y == list(y2)
True
------------------------------------------------------------
`▲作業中


コメント

このブログの人気の投稿

「日記帳(2023 冬)」

ブログの教材で学ぶMATH(1)