# 01 intro :::spoiler Terminal <br> Terminal、Command line 、或是中文的「終端機」是一個界面,讓使用者可以輸入指令來控制電腦,以下用 terminal 稱呼。 - 每一台電腦都會有 terminal,雖然大同小異,但不同的作業系統認得的指令仍然不太一樣 - terminal 是純文字的界面,可以很直接地控制電腦,所以不建議從網路上複製貼上看不懂的東西執行 我們的 Python 程式就會用 terminal 來跑,用法是: `python3 檔案.py` --- ::: :::spoiler installments <br> 打開 terminal,輸入`python --version` 如果沒有結果,或數字小於三,才下載 ##### Python [https://www.python.org/downloads/](https://www.python.org/downloads/) ##### text editor: Sublime [https://www.sublimetext.com/download](https://www.sublimetext.com/download) --- ::: :::spoiler Python Overview <br> Python - 蟒蛇 是一個很人類的語言(相信我) 會辨識空白鍵、換行、大小寫 跑程式是一行一行讀 從C演化過來的 是一個物件導向的語言  更複雜來說,電腦比較能直接理解的語言叫做低階語言,像是 C 和 Assembly 之類的,這些語言常常根據不同的作業系統或電腦硬體而有不同表現和要求,而 python 是一個高階語言,也就是同一程式就能在各種電腦上執行,而且可以在不知道原理的情況下做很多事。 事實上,電腦的世界就是建立在「不需要知道所有原理」之上的,這叫 [抽象化](https://zh.wikipedia.org/zh-tw/%E6%8A%BD%E8%B1%A1%E5%8C%96_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%B8)),因為電腦太複雜,所以很多事知道結果就好,不用管怎麼來的。 電腦在執行一個高階語言的程式時,必須要把它變成低階語言,通常由兩種工具來輔助, interpreters 和 compilers。 Interpreters 會把程式直接過來一行一行讀,讀到哪執行到哪。 Compilers 會把程式全部讀完,打包成一個電腦看得懂的低階程式檔,再執行。 Python 程式在跑時,其實兩種都有用到,只是人們使用起來只會感覺到 interpret 的部份,所以通常 python 被稱為 interpreted language。 --- ::: <br><br> 像一個語言有文法一樣,程式語言也有自己的語法。 人類語言的詞性就是電腦語言的 types Python 裡,所有東西都是一個沒有意義的 object (物件),透過定義成各種 type 被賦予意義 :::success **Variables, expressions and statements** ::: Python 程式裡主要有四種類別的東西: - **Variables**: 中文是變量或變數,可以用數學裡設的 x 來理解,就是一個可以拿來代指一個值的東西,不可以跟 Python 內建的 keywords 撞名 - **Operator**: 可以更動各種值的東西,例如加減乘除 - **Expression**: 程式裡會產生一個值的句子,例如 `1+1` 就會產生 2 - **Statement**: 程式裡命令執行某件事的句子,例如 `x = 5` 就是一個 assignment statement。很多 statement 都可以產生一個值,這時候就成為 expression statement <br><br> :::success **Built-in types** ::: 其中, 各種值的 types 又可以細分成很多種,這邊介紹一些常見的: `int` 整數 integer `str` 文字 string,通常由 `" "` 包起來 `float` 小數 floating point number `list` 清單,通常長 `[第一項, 第二項, 第三項]` `dict` 字典,通常長 `{key1: value1, key2: value2}` `bool` 布林,不是 true 就是 false 另外還有 `class` 一個 object,可以理解成自己寫的一種 type `function` 一個函數的概念,餵東西進去會回傳一個值,回傳的動作叫 return,呼叫時後面加括號,括號內的東西是餵給 function 的 input <br><br> :::success **print()** ::: `print()` 是一個 Python 內建的 function,會把括號內的東西印到 terminal 裡。 試試 ```python print("Hello World") ``` `" "` 是指純文字(string),也就是不管裡面裝什麼,都會呈現它看起來的樣子 括號內可以放會產生值的東西,也就是任何 expression 都可以放進去 <br><br> :::success **type()** ::: `type()` 是另一個內建 function,return 的值,也就是 return value 是括號內的東西的 type 試試 ```python print(type(5)) print(type("5")) print(type(5.0)) print(type(5.49)) ``` <br><br> :::success **Casting** ::: Python 裡很多 type 之間常常可以轉換,這個行為稱為 casting。 有些內建的 function 讓我們拿目標的 type 包住原本的那個值 `int()` : 變成 int `str()` : 變成 string `float()` : 變成 float 試試 ```python print(type(str(5))) print(type(int("5"))) print(type(int(5.0))) print(type(str(5.49))) ``` <br><br> :::success **Variable declaration** ::: 中文稱為宣告變數,是讓電腦知道這裡需要記憶體來存一個程式製造出來的變數。 Python 裡,變數的 declare 和 assign 會一步達成,就像數學裡說「設 x 為 15」一樣,憑空長出了一個 x 而且被指定成了 15。 `=` 在程式裡叫 assignment operator ,「設 x 為 15」在 Python 裡是 `x = 5` 試試 ```python x = 15 y = "Hi" a_variable = 100 print(x) print(type(x)) print(y) print(type(y)) print(a_variable) print(type(a_variable)) ``` <br><br> :::success **input()** ::: `input()` 是另一個常用的 Python 內建 function,會在 terminal 裡讓使用者輸入東西,當使用者按 enter 之後,程式就會把前面打的東西存進指定的 variable。 試試 ```python a = input("type here: ") print(a) print(type(a)) ``` <br><br> --- :::spoiler `Reference` Variables, expressions and statements [https://openbookproject.net/thinkcs/python/english3e/variables_expressions_statements.html](https://openbookproject.net/thinkcs/python/english3e/variables_expressions_statements.html) Statements Vs. Expressions [https://www.joshwcomeau.com/javascript/statements-vs-expressions/](https://www.joshwcomeau.com/javascript/statements-vs-expressions/) Built-in types [https://www.geeksforgeeks.org/python-data-types/amp/](https://www.geeksforgeeks.org/python-data-types/amp/) print() [https://docs.python.org/3/library/functions.html#print](https://docs.python.org/3/library/functions.html#print) type() [https://docs.python.org/3/library/functions.html#type](https://docs.python.org/3/library/functions.html#type) input() [https://docs.python.org/3/library/functions.html#input](https://docs.python.org/3/library/functions.html#input) ::: :::spoiler `Additional Readings` chapter1 https://runestone.academy/ns/books/published/thinkcspy/GeneralIntro/toctree.html chapter2 https://runestone.academy/ns/books/published/thinkcspy/SimplePythonData/toctree.html ::: --- input(), operator, casting :::spoiler BMI ### Arithmetic Operators 之前說過的 operators 裡,很常用的是加減乘除等 用法如下 | operator | 中文 | example | | --- | --- | --- | | + | 加法 | 5 + 8 會是 13 | | - | 減法 | 90 - 10 會是 80 | | * | 乘法 | 4 * 7 會是 28 | | / | 浮點數除法 | 7 / 2 會是 3.5 | | // | 整數除法 | 7 // 2 會是 3 | | % | 餘數 | 7 % 3 會是 1 | | ** | 次方 | 3 ** 4 會是 81 | 另外,將括號運用在算式裡也是可以的 例如我想算和的平方,輸入 `(a + b) ** 2` 就可以了 ### Types 前面說過每一個 type 都有自己的特性與用途,現在來證明 試試,先猜會印出什麼結果再驗證 ```python a = 8 b = 3 c = str(a + b) d = (a + b) * (a - b) ans = (c + str(d)) print(str(a) + str(b)) print(ans) print(type(ans)) ``` ### Lab 現在設計一個計算BMI的程式吧(ヽ´ω`) - 讓使用者輸入身高 - 讓使用者輸入體重 - 印出 BMI ::: <br></br> :::info [BACK](https://hackmd.io/@lhsueh1/python101) :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up