Try   HackMD

Python 部分語法筆記

目錄

清單


IO

標準輸入輸出

  • 輸入

    所有輸入都會自動以string保存

    • input( ["instructions"] )

      讀取單行資料,省略結尾'\n'
      可輸入說明文字 (括號內容會被輸出)

    • stdin

      需要從終端機上讀取大量資訊或從檔案讀取內容,直到EOF時使用

      • sys.stdin.read()

        讀取所有輸入資料直到EOF,包含結尾'\n'

      • sys.stdin.readline()

        讀取單行資料,包含結尾'\n'

      • sys.stdin.readlines()

        讀取多行資料,以'\n'作為分隔存入list,包含結尾'\n',每個item都包含結尾'\n'

      加上.strip()可以去除結尾'\n'

  • 輸出
    • print( 'string'[,'string'][,sep='(string)'][,end='(string)'] )

      sep為逗號隔開的間隔字元或字串,預設為' '
      end為結尾字元或字串,預設為'\n'

    • print(f'string')

      Formatted string literals常見的使用方式,可以加入Replacement field {},可以填入任何python表達式,包含lambda,亦可以使用print(f'''string''')的格式放入多行字串

      當內容需要顯示{}時,可以用{{}}呈現單個大括號

常用實例應用

以a b的方式輸入多行直到EOF

while True:
    a, b = map(int, input().split())

for不需要接收拆分值時

for _ in range(10):
    # code
    
#即_無意義

將n行字串串起

n = int(input())
tmp = [input().strip() for _ in range(n)]
Str = "".join(tmp)

輸入寫入dict(字典)

dict = {}

for _ in range(n):
    name, score = input().split()
    score = int(score)
	dict[name] = score

英文名詞定義

  • Attribute

    屬性,物件中的命名值,存儲物件的狀態。可以使用「點(.)」來訪問。分為以下三種命名方式:
    1. public:沒有底線作為前綴,可以全域訪問
    2. protected:單底線前綴(_variable 或 _method),只能在def的class或subclass中訪問
    3. private:雙底線前綴:(__variable 或 __method),只能在def的class中使用,無法被subclass或外部訪問,若發生名稱衝突,解譯器會自動重命名這些變量以確保其優先級最高。

  • element

    元素,一般指還沒有歸屬(尚不屬於某個容器內的元素),或即將加入容器的元素
    如:加入一個element到list

  • generator

    生成器,一種特殊的iterator,產生的value只能訪問一次(即從記憶體釋放)

  • item

    元素,一般指容器中的的元素,如list中已經存在的其中一個項目
    如:移除list中的一個item

  • iterable

    可迭代物件,一個容器或序列,可以產生iterator,可以遍歷其中的items,不必是data structure (資料結構)
    符合三要件:

    1. 有順序的對data structure進行迭代
    2. 每次迭代回傳的結果取得value,還能知道是否還能進行下一次的迭代
    3. 對於取得迭代的value,有明確且一致的執行邏輯

    e.g.,

    x = [1, 2, 3]
    y = iter(x)
    z = iter(x)
    #此例x, y, z都是iterable,但只有x是data structure (list)
    

    屬於iterable的容器包含:list, str, tuple, set, map, etc.
    不是所有容器都屬於iterable

  • iterator

    迭代器,iterable中的物件,透過執行後回傳的結果,取得每次的value和迭代狀態,至少需要使用next method,並符合三要件:

    1. 沒有parameter(參數)的傳遞
    2. 具有done的Attribute,return bool表示物件是否迭代完成
    3. 具有value的Attribute,每次迭代後取得的value
  • property

    一種特殊的Attribute,對屬性的訪問和設置進行更多的控制。與物件狀態有關的操作會封裝為property,以便後續維護維護。當訪問或設置property時,會調用了相應的Getter或Setter的Method,可以對屬性的值進行驗證、轉換或計算等操作

  • yield

    產生,類似return的效果,但回傳的是generator,且函數會被暫停執行直到下一次迭代

    generator + yield相當於將forin功能分離,以便更精準的操作及降低記憶體占用



tags: Python