01 intro

Terminal
Terminal、Command line 、或是中文的「終端機」是一個界面,讓使用者可以輸入指令來控制電腦,以下用 terminal 稱呼。
  • 每一台電腦都會有 terminal,雖然大同小異,但不同的作業系統認得的指令仍然不太一樣
  • terminal 是純文字的界面,可以很直接地控制電腦,所以不建議從網路上複製貼上看不懂的東西執行

我們的 Python 程式就會用 terminal 來跑,用法是:

python3 檔案.py


installments
打開 terminal,輸入`python --version`

如果沒有結果,或數字小於三,才下載

Python

https://www.python.org/downloads/

text editor: Sublime

https://www.sublimetext.com/download


Python Overview
Python - 蟒蛇

是一個很人類的語言(相信我)

會辨識空白鍵、換行、大小寫

跑程式是一行一行讀

從C演化過來的

是一個物件導向的語言

Untitled

更複雜來說,電腦比較能直接理解的語言叫做低階語言,像是 C 和 Assembly 之類的,這些語言常常根據不同的作業系統或電腦硬體而有不同表現和要求,而 python 是一個高階語言,也就是同一程式就能在各種電腦上執行,而且可以在不知道原理的情況下做很多事。

事實上,電腦的世界就是建立在「不需要知道所有原理」之上的,這叫 抽象化,因為電腦太複雜,所以很多事知道結果就好,不用管怎麼來的。

電腦在執行一個高階語言的程式時,必須要把它變成低階語言,通常由兩種工具來輔助, interpreters 和 compilers。

Interpreters 會把程式直接過來一行一行讀,讀到哪執行到哪。

Compilers 會把程式全部讀完,打包成一個電腦看得懂的低階程式檔,再執行。

Python 程式在跑時,其實兩種都有用到,只是人們使用起來只會感覺到 interpret 的部份,所以通常 python 被稱為 interpreted language。





像一個語言有文法一樣,程式語言也有自己的語法。

人類語言的詞性就是電腦語言的 types

Python 裡,所有東西都是一個沒有意義的 object (物件),透過定義成各種 type 被賦予意義

Variables, expressions and statements

Python 程式裡主要有四種類別的東西:

  • Variables: 中文是變量或變數,可以用數學裡設的 x 來理解,就是一個可以拿來代指一個值的東西,不可以跟 Python 內建的 keywords 撞名
  • Operator: 可以更動各種值的東西,例如加減乘除
  • Expression: 程式裡會產生一個值的句子,例如 1+1 就會產生 2
  • Statement: 程式裡命令執行某件事的句子,例如 x = 5 就是一個 assignment statement。很多 statement 都可以產生一個值,這時候就成為 expression statement


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


print()

print() 是一個 Python 內建的 function,會把括號內的東西印到 terminal 裡。

試試

print("Hello World")

" " 是指純文字(string),也就是不管裡面裝什麼,都會呈現它看起來的樣子

括號內可以放會產生值的東西,也就是任何 expression 都可以放進去


type()

type() 是另一個內建 function,return 的值,也就是 return value 是括號內的東西的 type

試試

print(type(5))
print(type("5"))
print(type(5.0))
print(type(5.49))



Casting

Python 裡很多 type 之間常常可以轉換,這個行為稱為 casting。

有些內建的 function 讓我們拿目標的 type 包住原本的那個值

int() : 變成 int

str() : 變成 string

float() : 變成 float

試試

print(type(str(5)))
print(type(int("5")))
print(type(int(5.0)))
print(type(str(5.49)))



Variable declaration

中文稱為宣告變數,是讓電腦知道這裡需要記憶體來存一個程式製造出來的變數。

Python 裡,變數的 declare 和 assign 會一步達成,就像數學裡說「設 x 為 15」一樣,憑空長出了一個 x 而且被指定成了 15。

= 在程式裡叫 assignment operator ,「設 x 為 15」在 Python 裡是 x = 5

試試

x = 15
y = "Hi"
a_variable = 100

print(x)
print(type(x))
print(y)
print(type(y))
print(a_variable)
print(type(a_variable))



input()

input() 是另一個常用的 Python 內建 function,會在 terminal 裡讓使用者輸入東西,當使用者按 enter 之後,程式就會把前面打的東西存進指定的 variable。

試試

a = input("type here: ")
print(a)
print(type(a))



Reference

Variables, expressions and statements https://openbookproject.net/thinkcs/python/english3e/variables_expressions_statements.html

Statements Vs. Expressions https://www.joshwcomeau.com/javascript/statements-vs-expressions/

Built-in types https://www.geeksforgeeks.org/python-data-types/amp/

print() https://docs.python.org/3/library/functions.html#print

type() https://docs.python.org/3/library/functions.html#type

input() https://docs.python.org/3/library/functions.html#input

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

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 都有自己的特性與用途,現在來證明

試試,先猜會印出什麼結果再驗證

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