Python學習筆記

數字大於2^63取餘會爆炸

基礎語法

I/O

name=input("What is your name?") print("my_name","Eric") #會以空白隔開 => my_name eric print("a","b",sep="<->") #會以<->當作分隔 => a<->b print("a","b",end=' ') #以空格當結尾,預設是換行 => a b n, m = map(int, input().split(',', 2)) #輸入兩個用逗號隔開的整數

Dictionary

大括號宣告,相當於C++的map

dic={'a':1,'b':2,'c':4} print(dic['c']) #=>4 #print all keys for i in dic: print(i,end=' ') #print all values for i in dic.values(): print(i,end=' ')

Set

大括號宣告,不會有重複元素,會自動排序,跟C++一樣不可用索引值取元素

s=set() #建立空集合 s={i for i in range(5)} #s={0,1,2,3,4} s.add(5) #加入元素 s.remove(4) #刪除元素 print(s) #{0, 1, 2, 3, 5} if 2 in s: #判斷2是否在set理 =>True

List

中括號宣告
注意:在函式裡修改外面宣告的list時,本尊會被修改,也就是說函式呼叫時傳進去的便變數是list的話會是傳指標,但傳一般變數時是複製一個副本,無法更改到外面的本尊。

A=['a string',23,100.232,'o'] print(A[2]) #=>100.232 B=[[None for _ in range(10)] for _ in range(10)] #10x10 list

tuple

小括號宣告,不能被修改

t=(1,2,3) #or t=1,2,3 print(t[1]) #=>2

If else

記得冒號,「且」是and不是&&

a=5 if a<4: print("a<4") elif a>=4 and a<6: print("a>=4 且 a<6") else: print("a>=6") #=> a>=4 且 a<6

Range

用來存區間整數
參數 : (起始,終點(不包括),間隔)

r=range(5,10) #5,6,7,8,9 print(r[4]) #=>9 r2 = range(5, 50, 5) #5,10,15,20 print(r2[3]) #=>20

Loop

for i in range(2,10,3): #起始值,結束值,增加值 print(i,end=' ') #2 5 8 a=[3,1,2,3] for i in a: print(i,end=' ') #=>3 1 2 3 i=0 while(i<10): print(i,end=' ') i+=1 #=>0 1 2 3 4 5 6 7 8 9

String

split可將字串拆成陣列,該分隔字元會被刪除,拆解後封裝成list
join可組合陣列,中間可輸入連接詞

s="hello world" arr=s.split('o') print(arr) #=>['hell', ' w', 'rld'] s2='---'.join(arr) print(s2) #=>hell--- w---rld

Others

a=[6,3,2,1,3,2,5] print(len(a)) #7 print(max(a)) #6 print(a.count(3)) #3出現2次輸出2 a.insert(2,100) #在index=2的位置插入100 a.remove(2) #移除第一個2 a.reverse() #反轉 print(a) #[5, 2, 3, 1, 100, 3, 6] b=[1,2,3,4,5] del b[1:3] #刪除index1到index3前一個的所有元素 => b=[1, 4, 5] a.append(b) #將b塞到a的最後面 => a=[5, 2, 3, 1, 100, 3, 6, [1, 4, 5]] print(a[-1][2]) #-1代表最後一個元素, =>5 a.clear() #清空 c=[] for i in range(10): c.append(i) print(c) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] d=[i for i in range(10)] print(d) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] #只取小於5的奇數 e=[i for i in d if i<=5 and i&1] print(e) #[1, 3, 5]

Class

__init__函式會在宣告此Class型別變數時自動執行初始化
__str__函式會在print時執行,返回一個字串當作print輸出的內容

class Student: def __init__(self,id,seat): self.id=id self.seat=seat def __str__(self): return f'My ID is {self.id}, and my seat number is {self.seat}.' def change_seat(self,newSeat): self.seat=newSeat student=Student("848392","3A2B") student.change_seat("8A7B") print(student) #My ID is 848392, and my seat number is 8A7B.

Numpy

用於進階數學運算

import numpy as np

基本宣告

Zeros及ones為陣列元素的初始值,且括號裡的數字是大小,不是元素

a=np.array([1,2,3]) # 一維 b=np.array([[1,2,3],[4,5,6]]) #二維 c=np.zeros(5) #[0,0,0,0,0] d=np.zeros((2,3)) #2×3的陣列,初始化為0 e=np.ones((3,4,5)) #3×4×5的陣列,初始化為1

加減乘除

numpy的加減乘除為同一個元素位置的運算
一般list則為整個list運算(只有+號)

a=np.array([1,2,3]) b=np.array([2,3,4]) print(a+b) #[3 5 7] c=[1,2,3] d=[2,3,4] print(c+d) #[1, 2, 3, 2, 3, 4]

矩陣相乘

a=np.array([[1,2], [2,3]]) b=np.array([[3,4], [4,5]]) print(a.dot(b)) #[[11 14] # [18 23]]

內積完相加

a = np.array([3, 5, 6]) b = np.array([2, 6, 1]) print(a @ b) #: 6+30+6=42

其他

a=[1,2,3,4,5] b=a[-1] #最後一個元素 c=a[::-1] #反向讀取 [5,4,3,2,1] d=a[3::-1] #從index=3開始反向讀取 [4,3,2,1]

常用指令

安裝函式庫

pip install [name]

查看python已安裝函式庫

pip list

安裝函式庫報錯

如果報錯顯示是在原碼中的語法錯誤,可以用以下方法解決:

Step1: 下載函式庫

首先到PyPI這個網站搜尋要下載的函示庫,進入頁面後點擊左側的Download files,把壓縮檔下載下來,接著解壓縮。

Step2: 更改錯誤

上面報錯內容為Setup.py檔案裡的40行少了一個括號,更改完後存檔。

Step3: 安裝

進入到該函式庫存放位置的跟目錄(預設為下載)並在路徑欄中輸入cmd進入終端,並用-e(從本機安裝)安裝該函式庫。

pip install -e [file name]

注意:這裡的file name是下載下來的資料夾名稱,不是該函式庫的名稱。

接著就大功告成了!!!

Select a repo