# Programming Refresher ###### tags: `普渡計畫` ## 編譯器 v.s. 直譯器 #### [參考資料-菜鳥救星講程式](https://rookiesavior.net/2020/09/09/engineer-what-are-compilers-and-interpreters/) ### 編譯器(Compiler): 是寫完程式碼後,最後全部一起翻譯,翻譯完後才能執行。 e.g. C、C++、C#、Java 編譯好後會多一個類似.class的檔案,這個就是機器語言,最後才能去執行程式。所以以java來講寫好程式後最少會有兩個檔案(你寫的程式碼.java檔、跟編譯過的.class檔)。 ### 直譯器(Intepreter): 是一行一行直接翻譯執行。每翻譯一行程式敘述就立刻執行,然後再翻譯下一行,再執行,所以直譯器可即時翻譯、執行。 e.g. PHP、Ruby、Python 我們在執行程式時,你馬上就看到執行結果,並不沒有編譯,而是直譯器本身是即時翻譯,所以你不需要再特別的去編譯它。 ### 速度 編譯器它是整篇一起翻譯後再執行、而直譯器是邊翻譯邊執行所以會比編譯器來的慢。編譯程式碼,是工程師最基礎的功夫,這邊也建議剛開始學程式語言的初學者一定要學會編譯程式後,再去挑選比較好的編輯器,地基打得穩,才有辦法走更遠的路。 ## Data Type ### Scalar(純量) 1. Integer 2. Float 3. Boolean ### Aggregate Types 1. Complex 2. String 3. List 4. Dictionaries 5. Tuple 6. File 7. Set ## 進位轉換 ### 認識進位 ```python= a = 0x10 b = 0o10 c = 0b10 d = 0xA0F print([a,b,c,d]) >>>[16, 8, 2, 2575] ``` hexadecimal(16進位) octal(8進位) binary(2進位) ### 如何轉換 ```python= x = bin(2) y = oct(8) z = hex(16) print([x,y,z]) >>>['0b10', '0o10', '0x10'] ``` ## 變數(Variable) ### 變數的特性 1. 變數是可以改變的 2. 變數是用符號來表示儲存的位置 3. 在Python中不用宣告變數 ### 變數宣告 1. Python中不用特別宣告變數的特性 2. 變數可以是一種物件 3. 像是Function, Classes, Modules都是物件 ## String 的特性 1. 可以透過"+"串接String(Concatenation) ```python= x = 'hello' y = 'yo' print(x+y) >>>helloyo ``` 2. 可以透過*來進行重複(Repition) ```python= y = "yoyoyo" print(y*3) >>>yoyoyoyoyoyoyoyoyo ``` 3. 指定位置(indexing) ```python= y = "Python" print(y[1]) >>>y ``` 4. 分割(slice) ```python= y = "Python" print(y[2:4]) >>>th ``` ```python= y = "Python" print(len(y)) >>>6 ``` 5. 字串是不可變的(Immutable String),如果改變會產生錯誤 ```python= y = "Python" y[-1]=0 print(y) >>>y[-1]=0 TypeError: 'str' object does not support item assignment ``` 6. 轉義序列 (Escape sequence) 由於技術等原因、無法直接在代碼中寫出所要的字元時採用的,以多個字元的有序組合來表示原本需要的字元的手段 ![](https://i.imgur.com/JuumEf2.png) ```python= print('"Isn\'t." she said.') >>> "Isn't." she said. print('First line.\nSecond line.') >>> First line. >>> Second line. ``` 如果不想讓"\"被解釋成轉義序列,可以在引號前加一個r,就可以避免這個情況發生 ```python= print("C:\some\name") >>> C:\some >>> ame print(r"C:\some\name") >>> C:\some\name ``` 7. lower() & upper() 把字串轉成大寫或小寫 ```python= a="ABC" print(a.lower()) >>>abc ``` ```python= a="abc" print(a.upper()) >>>ABC ``` 8. 判別開頭的方法 startwith() 這個Method是Capital Sensitive,會回傳Boolean值 ```python= a = "Hello World" print(a.startswith("h")) >>> false ``` 9. 替換字串 replace() ```python= a = "Hello World" print(a.replace("H", "Y")) >>>Yello World ``` 10. 另一種切割(Slice)工具,split() ```python= a = "Hello World" print(a.split(" ")) >>> ['Hello', 'World'] ```