# Happy Python Day
## ==上課講義== 👀
*https://docs.google.com/presentation/d/1AXAJXHQ5z33KekpalqyuvqB4iLBDRZEMausUhHRVovE/edit#slide=id.g8c48b4c02b_0_62*
---
✔**print()為字串,要轉換為整數,需要使用int(print())**



## ==Practice 1==💧
### 兩點座標
```python=
'''
題目內容:輸入兩點座標(x1, y1), (x2, y2),輸出兩點距離
請將底線處填入適當的程式碼
'''
x1, y1, x2, y2 = float(input()), float(input()), float(input()), float(input()) # float() 將文字強制轉浮點數(俗稱小數)
dist = ((x1-x2)**2 + (y1-y2)**2)**0.5
print(dist)
```
### 加權平均
```python=
'''
題目內容:依序輸入國、英、數三科成績,其權值分別為國文4倍、英文3倍、數學3倍,請計算加權平均(國文成績*4+英文成績*3+數學成績*3/10)
請將底線處填入適當的程式碼
'''
ch, en, ma = int(input()), int(input()), int(input()) # int() 將文字強制轉整數
avg = (ch*4 +en*3 +ma*3)*3/10
print(avg)
```
---
## ==Practice2==💧
**✔if,elif,else後,皆要加上逗號**

### 閏年判斷
```python=
'''
題目內容:輸入西元年,請判斷其為閏年或平年
閏年判斷:西元年被400整除 或 西元年被4整除且不被100整除
請將底線處填入適當的程式碼
'''
y = int(input())
if ((y%400==0) or (y%4==0 and y%100!=0)):
print("閏年")
else:
print("平年")
```
---
## ==Practice3==💧
✔**while:適用於符合條件即重覆執行者
(不確定迴圈會執行幾次)
for:適用於已知迴圈會執行幾次者**
✔**for 語法:
for迴圈的變數會依序走訪序列中的元素
序列可為range函式、字串(string)、表列(list)、字典(dict)**
**✔for 語法 + range( ):
起始值預設為0,遞增值預設為1
起始值 ≤ range( )的範圍 < 終止值 (俗稱左閉右開)**


### 終極密碼
```python=
'''
題目內容:終極密碼遊戲,電腦隨機從1-100取一個亂數當做密碼,玩家猜錯電腦會給提示
請將底線處填入適當的程式碼
'''
import random # 匯入random模組
ans = random.randint(1,100) # 利用random模組的randint()函數,從1到100之間取一個亂數
print('請猜一個1~100的數字')
play = True
while(play):
guess = int(input('來隨便猜一個數字吧: '))
if (guess > ans):
print('喔你猜得太大囉')
elif (guess < ans):
print('喔你猜得太小囉')
else:
print('恭喜你猜對了!')
play = False
```
### 質數判斷
```python=
'''
題目內容:輸入一個數,判斷其是否為質數,輸出對應的結果
請將底線處填入適當的程式碼
'''
n = int(input())
flag = 0 # flag值為0代表質數,1代表合數
for i in range(2 , n-1): # 從2到n-1,若有一個數可以把n整除,則n為合數
if (n%i == 0):
flag = 1
break # break語法用來跳出迴圈
if (flag==0):
print("質數")
else:
print("合數")
```
### 各位數字加總
```python=
'''
題目內容:輸入一個數,請計算所有數字和
例如:輸入2469,輸出21 (2+4+6+9)
請將底線處填入適當的程式碼
'''
n = input() # 字串版本寫法
sum = 0
for x in n: # 走訪字串n的每個字元,存到變數x
sum = sum + int(x) # 將變數x轉成整數加至總和sum
print(sum)
```
#### ==進階版==
```python=
'''
題目內容:輸入一個數,請計算所有數字和
例如:輸入2469,輸出21 (2+4+6+9)
請將底線處填入適當的程式碼
'''
print(sum([int(x) for x in input()]))
```
---
**Python 編解碼
練習: ASCII code, Base64, Base32
數字型字串與整數轉換
整數轉字串:str(<整數>)
字串轉整數:int(<字串>[, 進位]) 註:其它進位值轉10進位值
字元與ASCII值轉換
ASCII值(10進位)轉字元:chr(<ASCII值>)
字元轉ASCII值(10進位):ord(<字元>)
10進位值轉換其它進位值
10進位轉2進位:bin(<10進位整數>)
10進位轉16進位:hex(<10進位整數>)**