---
tags: 機器學習,Python,
---
# 機器學習 第二章 Python基礎操作
## 一、資料類型
### (一)數字(Number)
常用數字資料類型,整數(10, 20, ...)、浮點數(0.1, 11.2, ...)
### (二)布林值(Boolean)
計算機基本為二進制可表示為 : True / False;1 / 0 , 常運用在條件語句中
### (三)字串(String)
字串為一堆字符(character)的組成,應用廣泛使用 "" , '' 來表示。("HBO", 'NBA')
### (四)列表(List)
列表可自行定義,使用[]來表示, 如列表A為【10, 0.8, "NBA"】
故 A[0]=10,A[1]=0.8,A[2]=NBA (Python陣列起始位址為 0)
### (五)元組(Tuple)
與列表相同但無法更改列表內的資料,使用()來表示,元組A為(10, 0.8, "NBA")
A[0]=10,A[1]=0.8,A[2]=NBA A[0]=1 //顯示error 因位元組無法修改
### (六)字典(Dictonary)
像字典一樣,建立索引找取資料,關鍵字{(key):值(value)}來表示,如字典A為{1:"HBO","NBA":97}
A[1] = HBO , A[NBA] = 97 //輸入索引,輸出為資料
### (七)集合(set)
集合為不計算重複及順序之列表,使用{}來表示。
## 二、資料運算
### (一)算數運算(Arithmetic Operators)
### 1、整數運算
```python=
加:10+4 #output 14
減:10-4 #output 6
乘:10*4 #output 40
除:10/4 #為整數除法所以只執行整數部分運算 output 2
```
### 2、整數與浮點數運算
```python=
#整數與浮點數運算則顯示浮點數
加:10+4.0 #output 14.0
減:10-4.0 #output 6.0
乘:10*4.0 #output 40.0
除:10/4.0 #output 2.5
```
### 3、餘數運算
```python=
#取餘數運算:
10%4 #output 2
10(被除數) / 4(除數) = 2(商數) ... 2(餘數)
```
### 4、指數運算
```python=
指數運算: 2.0**3 #output 8.0
2.0**3 = 2.0*2.0*2.0 = (2.0)^3 = 8.0
```
### (二)比較運算(Comparison Operators)
> (大於), < (小於)、, >=(大於等於), <=(小於等於), ==(等同於), !=(不等於)
#### 1、整數比較
```python=
10 > 4 #output: Ture
10 < 4 #output: False
10 >= 4 #output: Ture
10 <= 4 #output: False
10 == 4 #output: False
10 != 4 #output: Ture
```
#### 2、整數與浮點數比較
```python=
10 > 4.0 #output: Ture
10 < 4.0 #output: False
10 >= 4.0 #output: Ture
10 <= 4.0 #output: False
10 == 4.0 #output: False
10 != 4.0 #output: Ture
```
### (三)賦予值運算
#### 1、元組(Tuple)
##### (1)使用範例
```python=
A =(10, 0.8, "NBA")
print (A[0])
# output : 10
```
##### (2)錯誤示範
```python=
A =(10, 0.8, "NBA")
A[0] = 2
#顯示error 因元組無法做修改
```
#### 2、列表(List)
##### 使用範例
```python=
A =[10, 0.8, "NBA"]
print (A[0])
A[0]+10
print (A[0])
# output : 10 20
```
### (四)邏輯運算(Logical Operators)
(and、or、not)
#### 1、and 運算
```python=
A = True and True ##output: True
A = True and False ##output: False
A = False and True ##output: False
A = False and False ##output: False
```
### 2、or 運算
```python=
A = True or True ##output: True
A = True or False ##output: True
A = False or True ##output: True
A = False or False ##output: False
```
### 3、not 運算
```python=
A = not True ##output: False
A = not False ##output: True
```
### (五)成員運算(Membership Operators)
in ,not in表示是否為成員之一,通常使用在列表、元組、字典、集合中
### 使用範例
```python=
A=[1,2,4,8,16,"NBA"] ##串列
B=(32,64,128,256,"HBO") ##元組
C={1:"NBA",2:"HBO",3:"ADSL"} ##字典
D={512,1024,2048,4096,"ADSL"} ##集合
```
### (1)判斷是否存在 (in)
```python=
print (8 in A) ##output : True
print ("NBA" in C) ##output : False (因為字典紀錄的是索引並非氏指引的資料)
print (1 in C) ##output : True
print (A in D) ##output : False
```
### (2)介紹一個有趣的指令 set
#### A、使用方法
##### set("字串")
```python=
a = set("ADSL")
print (a)
# output {'D','S','A','L'} 將字串猜成字符的集合
```
#### B、範例
```python=
a = set("ADSL")
print (A in a)
print (B in a)
# output True,False
```
### (2)判斷是否不存在 (not in)
```python=
print (16 not in B) ##output : False
print (1 not in C) ##output : True
```
### (六)集合運算(set Operators)
, &, |, - (像文氏圖)
### 1、交集 (&)
```python=
D={512,1024,2048,4096,"ADSL"}
E={1,2,4,8,16,32,64,4096,"ADSL"}
print (D&E)
#output : {4096,'ADSL'}
#補充IndentationError: unexpected indent
#python可以使用Tab及空白鍵但不能混用
```
### 2、聯集 (I)
```python=
D={512,1024,2048,4096,"ADSL"}
E={1,2,4,8,16,32,64,4096,"ADSL"}
print (D&E)
#output : {1,2,4,8,16,32,64,512,1024,2048,4096,'ADSL'}
```
### 3、差集 (-)
```python=
D={512,1024,2048,4096,"ADSL"}
E={1,2,4,8,16,32,64,4096,"ADSL"}
print (D&E)
#output : {512,1024,2048}
```
## 三、流程控制
### (一)條件語句
#### 1、if else
##### (1)使用方式
if (條件式):
執行A內容
else:
執行B內容
符合條件式時執行A內容,不符合條件式時執行B內容。
##### (2)範例
```python=
a = 0
if a>0 :
print("a大於零")
else :
print("a小於等於零")
#output: a小於等於零
```
#### 2、if else if else (設定多個條件)
##### (1)使用方法
```python=
if (條件1):
執行A內容
elif(條件2):
執行B內容
else:
執行C內容
#符合條件1時執行A內容,符合條件2時執行B內容,不符合條件1.2時執行C內容。
```
##### (2)範例
```python=
a = -1
if a>0:
print("a大於零")
elif a==0:
print("a等於零")
else:
print("a小於零")
#output: a小於零
```
### (二)迴圈控制
#### 1、for
##### (1)使用方法
for 變數名稱 in (列表、字串、字典、元組):
將(列表、字串、字典、元組)中的資料,逐一取出,逐一處理。
##### (2)範例
```python=
for x in [4,1,2]: #列表
print("逐一取得列表中的資料",x) #output: 4,1,2
for y in "Hello": #字串
print("逐一取得字串中的資料",y) #output: H,e,l,l,o
for z in range(3): #等於 for x in [0,1,2]:
print("逐一取得字串中的資料",z) #output: 0,1,2
```
#### 2、while
##### (1)使用方法
while 條件式:
執行A內容
#當符合條件式時,執行A內容,執行完跳回While再次比較條件,值道條件不符跳出迴圈。
##### (2)範例
```python=
n=1
while n<5:
print(n)
n+=1
#output: 1,2,3,4
```
#### 3、continue
##### (1)使用方法
while (條件式):
continue
for 變數名稱 in (列表、字串、字典、元組):
continue
# continue 強制回到迴圈進行下一次判斷。
##### (2)範例
```python=
n=0
for x in [0,1,2,3]:
if x%2 ==0:
continue
n+=1
print(n)
#output: 2
#因為 0,2進入if迴圈遇到continue強制跳出迴圈執行下一次故只加了2次。
```
#### 4、break
##### (1)使用方法
while (條件式):
break
for 變數名稱 in (列表、字串、字典、元組):
break
# break 強制結束迴圈
##### (2)範例
```python=
n=1
while n<5:
if n==3
break
n+=1
print(n)
#output: 3
#因為n=3時進入if迴圈遇到break強制離開迴圈,故印出3。
```
## (三)函數設計
### 1、函數(Function)
對函數所需要的返回值(return),Python使用 def
def 函式名稱 (參數名稱):
函式內部的程式碼
### 2、範例
#### (1)未加入參數(Case)的函式定義
```python=
# 未加入參數(Case)的函式定義
def sayHi():
print("Hi")
##呼叫函式
sayHi()
##output: Hi
```
#### (2)加入參數(Case)的函式定義
```python=
# 加入參數(Case)的函式定義
def say(x):
print(x)
##呼叫函式
say(good)
##output: good
```
#### (3)加入參數與回傳值(Case)的函式定義
##### a、範例1
```python=
# 加入參數與回傳值(Case)的函式定義
def say(x):
print(x)
return #若無特別寫就是回傳 None
#呼叫函式,取得回傳值
a = say("abc") #回傳值為None 放入a變數中
print (a)
##output: None
```
##### b、範例2
```python=
## 加入參數與回傳值(Case)的函式定義
def add(x,y):
result = x+y
return "Hi"
##呼叫函式,取得回傳值
a = add(3,4) #回傳值為Hi 放入a變數中
print (a)
##output: Hi
```
##### c、範例3
```python=
# 加入參數與回傳值(Case)的函式定義
def add(x,y):
result = x+y
return result
##呼叫函式,取得回傳值
a = add(3,4) #回傳值為7(3+4) 放入a變數中
print (a)
##output: 7
```
#### (4)加入預設參數(Case)的函式定義
##### 範例
```python=
# 加入參數預設與回傳值(Case)的函式定義
def say(x="Hi"):
print(x)
#呼叫函式
say("good")
say()
##output: good,Hi
##若有給參數則印出參數,若無參數值則印出預設值Hi
```
#### (5)無限參數(Case)的函式定義
##### a、說明
def 函式名稱(*無限參數)
無限參數以Tuple(元組)資料形態處理
函式內部的程式碼
#呼叫函式,可傳入無限多個參數
##### b、範例
```python=
## 無限參數(Case)的函式定義
def avg(*ns):
for x in ns:
sum=sum+n
print(sum/len(ns))
##呼叫函式
avg(4,6)
avg(3,5,10)
avg(1,4,-1,-8)
#output : 5,6,-1
```
## (四)程式庫導入
### 1、使用方法
```python=
import math #導入math程式庫,可以直接使用程式庫裡的函式
from exp import #只從math程式庫導入exp函式
from exp import as ex ##只從math程式庫導入exp函式,並將exp取綽號為ex,要使用時ex()即可
```