--- title: 'python' tags: 程式 disqus: hackmd --- [TOC] ## python ### input(' ') 獲取使用者的輸入訊息 ```python= name = **input(**'Hello, what is your name? '**)** print('Hi, ', name) ``` 輸出結果 ![](https://i.imgur.com/oUkeqZJ.png) --- ### if elif else 的應用 ```python= grade = 90 if grade >= 90: print('Excellent!') elif grade >= 60: print('Good enough!') else: print('Loser!') ``` 輸出結果 ![](https://i.imgur.com/64iDXhB.png) --- ### or and not 的應用 ```python= h = 180 w = 85 grade = 80 if h > 175 or w > 80: print('big dude') if grade > 70 and grade < 90: print('noraml') if not grade < 90: print('noraml') ``` 輸出結果 ![](https://i.imgur.com/WEbqqJ7.png) --- ### for迴圈 (for loop) 1. 要使用for迴圈,要先有序列容器。 ```python= arr1 = [2, 4, 6, 8, 10] str1 = 'hello python' for i in range(10): print(i) print('***\n') for i in range(len(arr1)): print(arr1[i]) print('***\n') for i in arr1: print(i) print('***\n') for i in str1: print(i) print('***\n') for i in arr1: i += 1 print(arr1) ``` 輸出結果 ![](https://i.imgur.com/YXx5yxy.png) 2. for迴圈陣列 ```python= # in-place construction arr1 = [i for i in range(10)] print(arr1) # you can use if to filter the elements arr2 = [x for x in arr1 if x % 2 == 0] print(arr2) # you can use as many conditions as you want! arr3 = [x for x in arr1 if x >= 3 and x % 2] print(arr3) # use nested for loops to make everyone dizzy XD arr4 = [(x, y) for x in range(3) for y in range(4)] print(arr4) ``` 輸出結果 ![](https://i.imgur.com/bbJzK0s.png) --- ### break 、 continue 1. 迴圈中如果要終止可以使用break、continue ```python= for i in range(1,11): if(i==6): break print(i, end=",") if(i==7): continue print(i, end=",") ``` --- ### Range() 的應用 Range這個型別可用來創建並儲存特定範圍內的整數,一旦Range被創建了,裡面的內容是不可修改的。 > Range(stop) stop:停止點 >Range(start, stop) start:起始點 stop:停止點 >Range(start, stop, step) start:起始點 stop:停止點 step:間隔 1. 建立整數的串列可用range, range(起始值 [,終止值, 間格值]) ```python= ironman_list1 = range(5) ironman_list2 = range(3,8) ironman_list3 = range(3,8,2) print(list(ironman_list1)) print(list(ironman_list2)) print(list(ironman_list3)) ``` 輸出結果 ![](https://i.imgur.com/p1D8eii.png) --- ### String (字串) 一個比較好理解的方式為,其實String就像是一堆字元排在一起組合而成的 (字元指的為一個字)。需要注意的是,字串的內容也是不能修改的。 ```python= str1 = 'hello python' str2 = str1 str2 += ' journey' print(str2 is str1) print(str1) result = str2.split(' ') print(result) print(type(result)) result_back = '***'.join(result) print(result_back) print(type(result_back)) ``` 輸出結果 ![](https://i.imgur.com/Vy3JF1i.png) --- ### List的應用 List即為Python中的陣列(Array)。可以修改裡面的內容。 ```python= arr1 = [1, 2, 3] arr2 = [10, 'hello world', 8.7] arr1[0] = [1, 2, 3] print(type(arr1)) print(arr1) print(arr2) ``` 輸出結果 ![](https://i.imgur.com/jjhkWBB.png) --- ### 一維陣列、 二微陣列 、 三微陣列 ```python= ironman_x1 = np.random.randint(10, size=6) #一維陣列 ironman_x2 = np.random.randint(10, size=(3,4)) #二維陣列 ironman_x3 = np.random.randint(10, size=(2,3,2)) #三維陣列 print("ironman_x1---->", ironman_x1) print("ironman_x2---->", ironman_x2) print("ironman_x3---->", ironman_x3) ``` --- ### 序列型別的操作 1. 常見的序列容器操作方法 | 操作 | 描述 | | -------- | -------- | | x in s | 檢查X是否存在於S這個容器之中| |x not in s |檢查X是否不存在於S這個容器之中| |s + t |容器S與容器T的內容相加| |s * n |三個容器S => s + s + s| |len(s) |取得容器的長度 (裡面有幾個元素的意思)| |min(s)|取得容器內的最小值 (前提是裡面的元素要能比大小啊!)| |max(s) |取得容器內的最大值| |s.index(x[,i[,j]]) |X元素在S容器的索引值,如果有給i, j就只會在index為i~j的範圍找| |s.count(x) |X這個元素在S這個容器內出現幾次| 2. 修改序列容器的內容 | 操作 | 描述 | | -------- | -------- | |s[i] = x| index為i的元素的內容置換為X| |s[i:j] = t| index從i到j的元素內容置換為X| |s[i:j:k] = t| index從i到j的元素,以step為k的方式,將內容置換為X| |del s[i:j]| 把index從i到j的元素刪除| |del s[i:j:k]| index從i到j的元素,以step為k的方式刪除元素| |s.append(x)| 將X塞到S容器的最後面| |s.clear()| 將S容器的內容全部刪除(same as del s[:])| |s.copy()| 複製S容器(same as s[:])| |s.extend(t)| 同 s = s + t| |s.insert(i,x)| 在S容器index為i的位置將X插入,原有的元素(們)將會往後移| |s.pop([i])| 將index為i的元素取出,並將其移出容器| |s.remove(x)| 刪除第一個找到的X| |s.reverse()| 讓容器的內容順序顛倒| ###### tags: 取出部分的內容,若是想從一個序列容器中取出一部份的內容來使用,我們可以用seq[開始:停止:間格] ```python= str1 = 'hello world' arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print(arr1[0:5]) print(arr1[0:-1:2]) print(arr1[:]) print(arr1[:] is arr1) print(str1[5:]) ``` 輸出結果 ![](https://i.imgur.com/kcbpTFH.png) --- ### 切片取值 1. 串列取值的方式除了可以使用index取得單一值,也可以使用切片的方式取得多個值 ```python= ironman_list1 = [1,2,3,4,5,6] print(list(ironman_list1[2:5])) ``` 輸出結果 ![](https://i.imgur.com/yIntZsb.png) --- ### 串列預設函數 1. 1. len():串列((總)元素數目) 2. min():串列元素最小值 3. max():串列元素最大值 ```python= ironman_list1 = [1,2,3,4,5,6] print('len() 串列元素數目----->',len(ironman_list1)) print('min() 串列元素最小值--->',min(ironman_list1)) print('max() 串列元素最大值--->',max(ironman_list1)) ``` 輸出結果 ![](https://i.imgur.com/Td0rJzQ.png) 2. 1. index():元素在串列中第一次出現的index 2. count():元素在串列中出現的次數 ```python= ironman_list1 = [1,2,3,4,3,6,3] print('index() 元素3第一次出現的位置------>',ironman_list1.index(3)) print('count() 元素在串列中出現的次數----->',ironman_list1.count(3)) ``` 輸出結果 ![](https://i.imgur.com/9psoVVk.png) --- ### 在list中加入、刪除元素、排序元素 #### 加入元素 1. .append():在串列中(末尾加入元素) 2. .extend():在串列中(末尾加入串列的元素) 3. .insert():在串列中(指定位子加入) extend和insert雖然B同樣都是串列,但加入A串列的方式不一樣,可以注意一下 ```python= ironman_list1 = [1,2,3,4,5,6] ironman_list1.append(8) print('append() 將8做為元素加在list最後---->',list(ironman_list1)) ironman_list1 = [1,2,3,4,5,6] ironman_list1.extend([8,9]) print('extend() 將[8,9]中的元素加在list最後---->',list(ironman_list1)) ironman_list1 = [1,2,3,4,5,6] ironman_list1.insert(3,8) print('insert() 在3的位置加入元素8---->',list(ironman_list1)) ``` 輸出結果 ![](https://i.imgur.com/qlqFSmH.png) #### 刪除元素 1. .pop():取出串列中最後一個元素,並且移除元素 2. .remove(E):移除A串列中第一個出現E元素 ```python= ironman_list1 = [1,2,3,4,5,6] n = ironman_list1.pop() print('pop() 取出list最後一個元素並且移除---->',n) ironman_list1 = [2,3,4,5,6] ironman_list1.remove(3) print('remove() 移除第一次出現3的元素---->',list(ironman_list1)) ``` ![](https://i.imgur.com/aqSqJUc.png) #### 排序元素 1. .reverse():反轉串列的順序 2. .sort():將串列做排序 ```python= ironman_list1 = [2,5,6,3,4] ironman_list1.reverse() print('reverse() 反轉list順序---->',list(ironman_list1)) ironman_list1 = [3,2,5,7,4] ironman_list1.sort() print('sort() 將list從小到大排列---->',list(ironman_list1)) ``` ![](https://i.imgur.com/5G6NZoB.png) --- ### Tuple的應用 ###### tags: Tuple可用來存放一組資料。一旦被創造,將無法修改內容。 ```python= t1 = 10, 20 # it can hold different types of data t2 = 10, 'hello world' print(type(t1)) print(t1) print(t2) ``` 輸出結果 ![](https://i.imgur.com/TuBbskM.png) --- ### del 1. 刪除元素 ```python= numberes = 1 del numberes ``` 2. 刪除陣列元素 ```python= ironman_list1 = [1,2,3,4,5,6] del ironman_list1[1:4] print(list(ironman_list1)) ``` 輸出結果 ![](https://i.imgur.com/dBXJ0fk.png) --- ### function 1. 可以指派他們參數,也可以把他們當作引數傳給其他函式,以及回傳值。 def 方法名(): ```python= def GetArea(height,width): area = width * height return area ret1 = GetArea(6,9) print('GetArea = ',ret1) ``` 輸出結果 ![](https://i.imgur.com/4iFmggr.png) --- ### import package 1. 如果想要引用其他module裡面的function、class、variable。就需要使用import的方式引用進來。 ``` . import 套件名稱 套件名稱.函數名稱 # 使用函數的方式 ``` 2. 使用套件的函數可以不必輸入套件名稱 ``` from 套件名稱 import * 函數名稱 # 使用函數的方式 ``` 3. 如果兩個套件有相同的函數名稱,可以使用第三種方法 ``` from 套件名稱 import 涵式1, 涵式2, ..... 涵式1 # 使用函數的方式 ``` 4. 將套件名稱取成另外一個簡短的別名 ``` from 套件名稱 as 別名 別名.函數名稱 # 使用函數的方式 ``` --- ### sys.argv | argv 參數 | 說明 | | -------- | -------- | | sys.argv[0] | 表示代碼本身文件路徑 | | sys.argv[1~n] | 表示使用者輸入的文字,用空格隔開 | ![](https://i.imgur.com/Et4iN0f.png) 說明: test.py a b sys.argv[1] 是指 a sys.argv[2] 是指 b --- ### eval() 函数用来执行一个字符串表达式,并返回表达式的值。 --- ### None None表示空,但它不等于空字符串、空列表,也不等同于False > https://zhuanlan.zhihu.com/p/65193194 --- ### os.path.getmtime() 獲取文件的 最後修改時間 ## os套件