---
# System prepended metadata

title: python
tags: [程式]

---

---
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套件


