siriuskoan
if
for
、while
list
dict
name = input("輸入名字: ") print("Your name is", name, sep=" ", end="!")
變數是存放值的容器
型別代表這個變數(值)的類型
int
str
float
list
+
、-
、*
、/
、//
&
、|
、^
、~
and
、or
、not
# int a = 1 a2 = a + 5 a3 = a2 * 2 # float b = 1.0 # str c = str(a) c *= 10 # list d = [1, "1"]
階段考不會出現
What's the output?
a = 12 a = str(a) a1 = int(a) + 1 a2 = a * 2 a3 = int(a) + 3 // 2 print(a1, a2, a3) print(type(a1), type(a2), type(a3))
if
判斷一個條件是否為真,並根據結果做不同的事情
score = int(input("輸入分數: ")) if score >= 90: print("A+") elif score >= 85: print("A") elif score >= 80: print("A-") else: print("no A")
=
vs. ==
=
==
What's the output?
# credit to 鄧人豪 x = 2 y = 3 bool1 = x == y bool2 = x = y print(bool1, bool2) print(x, y)
for
、while
在某個條件成立時重複執行特定片段的程式
while
name == ""
for
# while name = input("請輸入名字: ") while name == "": print("名字不得為空") name = input("請輸入名字: ") print("Welcome, " + name)
# for import time count = int(input("從多少開始倒數: ")) for i in range(count, -1, -1): print("倒數到: " + str(count)) time.sleep(1) print("倒數結束")
break
continue
name = input("請輸入名字: ") while True: print("名字不得為空") name = input("請輸入名字: ") if name != "": break print("Welcome, " + name)
range
左閉右開MAX = 0 for n in range(10): n = int(input("輸入 0 ~ 100 的數字: ")) if n > 100 or n < 0: print("範圍錯誤") continue MAX = max(MAX, n) print("最大值是 " + str(MAX))
for i in range(1, 10): for j in range(1, 10): print(f"{i}*{j}={i*j}", end=" ") print()
輸出 0 到 1 的每個小數,取到小數點後第二位
即,\(0.00,0.01,0.02,...,0.99,1.00\)
for i in range(0, 101): print("%.2f" % round(i / 100, 2))
一大堆字連在一起
s1 = "abc" s2 = 'abc' s3 = """abc 123"""
name = "siriuskoan" print("My name is {}".format(name)) print(f"My name is {name}")
string = "I love cat" # 長度 print(len(string)) # 索引 print(string[2]) # 分割 print(string[2:6])
string = "I love dog" # replace print(string.replace("dog", "cat")) # find dog_index = string.find("dog") print(f"The word dog is at {dog_index} to {dog_index + 2}") # split data = "Shohei Ohtani,57,17,.298".split(",") print(f"Player: {data[0]} AB: {data[1]} \ H: {data[2]}, AVG: {data[3]}")
# join like = ["Reading", "Coding", "Gaming"] print("I like " + ", ".join(like)) # strip name = input("名字: ") # name is " siriuskoan " print(name.strip())
list
可以裝好幾項資料的資料結構
li = [1, 2, 3] for ele in li: print(ele) # or for i in range(len(li)): print(li[i])
li = [1, 2, 3, 4, 5, 6, 7, 8, 9] print(li[0:5]) print(li[:-1]) print(li[::-1])
li = [1, 2, 3, 4, 5] li.append(6) li.extend([7, 8]) li.insert(0, 0) print(li.index(3)) print(li.count(1)) li.pop() li.remove(0) li.clear()
li = [2, 3, 9, 7, 6, 0] print(list(reversed(li))) li.reverse() print(sorted(li)) li.sort()
list
的指派L1 = [1, 2, 3, 4, 5] L2 = L1 L2[0] = -1 print(L1, L2) # 相同
vs.
L1 = [1, 2, 3, 4, 5] L2 = L1.copy() # or L1[:] L2[0] = -1 print(L1, L2) # 只有 L2 被改掉
enumerate
li = [1, 2, 3, 4, 5] for index, value in enumerate(li): print(f"Index {index} is {value}")
map
、filter
li = [-2, 2, 3, -10, 8, -7, 1] li = list(map(abs, li))
li = [-2, 2, 3, -10, 8, -7, 1] def check_larger_than_zero(n): return True if n > 0 else False li = list(filter(check_larger_than_zero, li))
dict
字典
對鍵值對 (key-value pair) 做一對一的對應
key 必須要 immutable (不可變動)
d = {"name": "siriuskoan", "age": 19, "gender": "male"} print(d["name"]) # solve key error print(d.get("name")) # 更改值 d["name"] = "phkoan" # 新增 key d["department"] = "CS" # 刪除 key del d["gender"]
dict
遍歷d = {"name": "siriuskoan", "age": 19, "gender": "male"} for value in d.values(): print(value) for key in d.keys(): print(key) for k, v in d.items(): print(f"key {k} with value {v}")
import json json_data = """ {"name": "siriuskoan", "hobby": ["reading", "coding"]} """ d = json.loads(json_data)
把一塊程式碼包起來,以利後續使用及功能區分
def say_hello(name): print(f"Hello, {name}") def add(a, b, c = 0): return a + b + c
def add(*numbers): s = 0 for n in numbers: s += n return s def mapping(**kv): for k, v in kv.items(): print(f"{k}: {v}")
會先從自己的 symbol table 找,找不到再去 global
g = 10 def f(): print(g) g = 5 f()
g = 10 def f(): global g print(g) g = 5 f()
建議變數用傳的,不要扯到一堆 global、local 的問題
lambda
匿名函式
INPUT = "2139023, 3242, 34.2, 23, 43".split(", ") print(list(map(lambda x: int(x) ** 3 + 1, INPUT)))
自己呼叫自己
注意終止條件及邊界處理
def fib(n): if n == 0 or n == 1: return 1 return fib(n - 1) + fib(n - 2) print(fib(10))
一整份 (可能是一個或多個 python 檔案) 可以讓你引用的程式
import
引入 python 檔案或函式庫
import math print(math.sqrt(4)) import math as MATH print(MATH.sqrt(4)) from math import sqrt print(sqrt(4)) from math import sqrt as s print(s(4))
import
強烈建議不要用 from module import *
這種寫法
讓開發者可以針對不同專案獨立出不同開發環境的好幫手
安裝 virtualenv
套件
$ pip install virtualenv
建立新的虛擬環境
$ virtualenv venv
進入虛擬環境
$ .\venv\Scripts\activate
這時候應該會看到 prompt 前面多出 (venv)
進到去之後,就是一個完全與外部無關的環境了
接著可以開始安裝需要的套件等等