# 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))
```