---
# System prepended metadata

title: PYTHON 筆記(上)

---

# PYTHON 筆記(上)
第一章到第六章的濃縮

## 第一章(介紹)

### 輸入
``` 
input()
```
### 輸出
``` 
print()
```
### 整數輸入
```
x = int(input())
```
### 浮點數輸入
```
x = float(input())
```

## 第二章(型態、運算子)

### 布林值
```
bool()
```
決定輸出值
為True或False
### 整數
```
int()
```
宣告變數的型態為整數
### 浮點數
```
float()
```
告訴變數的型態為浮點數
### 字串
```
str()
```
告訴變數的型態為字串
### 優先順序
```
()
** #指數
%
/
// #整除
*
+
-
```

### 練習1
求三數總分數與平均
```
if __name__ == '__main__':
    a = float(input('請輸入第一次期中成績?'))
    b = float(input('請輸入第二次期中成績?'))
    c = float(input('請輸入期末考成績?'))
    print('總分為',int(a+b+c),'平均為',(a+b+c)/3)
```
### 練習2
英制轉公制
```
if __name__ == '__main__':
    a = float(input('請輸入幾尺?'))
    b = float(input('請輸入幾吋?'))
    print('轉換成',(a*12+b)*2.54,'公分')
```
### 練習3
分組報告
全班40個人
5個一組
判斷座號為第幾組
```
if __name__ == '__main__':
    a = int(input('請輸入座號?'))
    print('組別為', int(a/6)+1)
```
### 練習4
賣場買飲料
1罐20元
1打200元
```
if __name__ == '__main__':
    a = int(input('請輸入購買飲料的罐數?'))
    print('需花費',int((a//12)*200 + (a%12)*20))
```
### 練習5
電腦單位運算
```
if __name__ == '__main__':
    print('1KB=', 2 ** 10,'Byte')
    print('1MB=', 2 ** 20,'Byte')
    print('1GB=', 2 ** 30,'Byte')
    print('1TB=', 2 ** 40,'Byte')
    print('1PB=', 2 ** 50,'Byte')
    print('1EB=', 2 ** 60,'Byte')
    print('1ZB=', 2 ** 70,'Byte')
    print('1YB=', 2 ** 80,'Byte')
```
### 練習6
字串處理
(1)空白字元進行切割
(2)將(1)結果還原
(3)所有單字都大寫
```
if __name__ == '__main__':
    input_string = "This is a sample string"
    words = input_string.split()
    print(words)
    restored_string = ' '.join(words)
    print(restored_string)
    upper_words = [word.upper() for word in words]
    result = ' '.join(upper_words)
    print(result)
```

## 第三章(容器)

### TUPLE
不可跟改的物件
```
val = (1,2,3)
```

### 串列
可更改
依序輸出
```
val = ['a','b','c']
len(val) #串列長度
val.index('a') #1
val.append('d') #['a','b','c','d']
val.insert(3,'e') #['a','b','c',e',d']
val.remove('e') #['a','b','c','e']
del val[0] #['b','c','e']    
```

### 字典
key 和 value 存取資料
key 查詢 value
```
dict ={'a':'123','b':'456'}
for i in dict.keys():
    print(i,':',dict[i])
```

### 集合
沒有順序
用於找出資料是否存在
```
val = set(('a',123,'b':456))
print(val)
```

### 練習1
使用者輸入一段英文句子
去除前後空白或句點
split分割
反轉輸出
```
if __name__ == '__main__':
    val = input("請输入一段英文句子：")
    word = val.strip('.').strip()
    words = word.split()
    print(words[::-1])
```

### 練習2
找出英文與數學都及格
數學不及格
英文及格且數學不及格
全班學生 = set(['John','Mary','Tina','Fiona','Claire','Eva'])
英文及格 = set(['John','Mary','Clsire','Eva'])
數學及格 = set(['Mary','Fiona','Claire','Eva'])
```
if __name__ == '__main__':
    全班學生 = set(['John', 'Mary', 'Tina', 'Fiona','Claire','Eva'])
    英文及格 = set(['John', 'Mary', 'Claire', 'Eva'])
    數學及格 = set(['Mary', 'Fiona', 'Claire', 'Eva'])
    print('英文與數學都及格',英文及格.intersection(數學及格))
    print('數學不及格',全班學生 - 數學及格)
    print('英文及格且數學不及格',英文及格 - 英文及格.intersection(數學及格))
```

### 練習3
尋找兩個句子中相同字
不包含逗號與句號
```
if __name__ == '__main__':
    val1 = "a,b,c,d."
    val2 = "a,c."
    val1 = val1.replace(".","")
    val2 = val2.replace(".", "")
    word1 = val1.split(',')
    word2 = val2.split(',')
    set1 = set(word1)
    set2 = set(word2)
    print(set1.intersection(set2))
```

### 練習4
輸入三個信箱和名字
透過名字
尋找信箱
```
if __name__ == '__main__':
    email_dict = {}
    for i in range(3):
        name = input("請輸入名字?: ")
        email = input("請輸入電子郵件?: ")
        email_dict[name] = email
    search_name = input("請輸入要查找的名字: ")
    if search_name in email_dict:
        email = email_dict[search_name]
        print(email)
```

## 第四章(判斷)
### 判斷
做對的事
```
if x > 0:
    #當x>0
elif x < 20:
    #當 x<20 
else:
    #都沒有
```
### 練習1
低於0.9 為近視
```
if __name__ == '__main__':
    val = float(input('請輸入眼鏡度數?'))
    if val < 0.9:
        print('近視')
    else:
        print('視力正常')
```
### 練習2
象限判斷
第一象限 x>0 y>0
第二象限 x<0 y>0
第三象限 x<0 y<0
第四象限 x>0 y<0
```
if __name__ == '__main__':
    x = int(input('請輸入x?'))
    y = int(input('請輸入y?'))
    if (x>0 and y>0):
        print('第一象限')
    elif (x<0 and y>0):
        print('第二象限')
    elif (x<0 and y<0):
        print('第三象限')
    else:
        print('第四象限')
```

## 第五章(迴圈)

### 迴圈
遞增或遞減
條件不符何時結束

### FOR
```
for i in range(5):
    print(i)
```

### WHILE
```
i = 3 
while i < 13:
    print(i)
    i = i + 1
```    

### 練習1
平方和
輸入2
輸出 1 * 1 + 2 * 2
```
if __name__ == '__main__':
    x = int(input('請輸入n?'))
    total = 0
    for i in range(1,x+1):
        total += i * i
    print(total)
```    

### 練習2
列出 1 到 1000 
不被2和3整除的數字
```
if __name__ == '__main__':
    for num in range(1, 1001):
        if num % 2 != 0 and num % 3 != 0:
            print(num, end=" ")
```

## 練習3
完全數
6的因數有1,2,3,6
1+2+3=6
```
if __name__ == '__main__':
    per = []
    for num in range(2, 1001):
        fac = [1]
        for i in range(2, int(num ** 0.5) + 1):
            if num % i == 0:
                fac.extend([i, num // i])
        if sum(fac) == num:
            per.append(num)
    print(per)

```
### 練習4
骰骰子
到6結束
```
import random
if __name__ == '__main__':
    while True:
        dice_roll = random.randint(1, 6)
        print(dice_roll)
        if dice_roll == 6:
            break
```            
## 第六章(函式)
### 函式
f(x) = x
``` 
def f(x):
    return x
```
### 遞迴
f(x)=1++x
```
def f(x):
    if x == 1:
        return 0
    else:
        return x + f(x-1)
```        

### 練習1
階層
```
def f(x):
    if x < 1:
        return 1
    else:
        return x * f(x-1)
if __name__ == '__main__':
    x = int(input('請輸入x?'))
    print(f(x))
```    