---
# System prepended metadata

title: Happy Python Day

---

# Happy Python Day
## ==上課講義==  👀




*https://docs.google.com/presentation/d/1AXAJXHQ5z33KekpalqyuvqB4iLBDRZEMausUhHRVovE/edit#slide=id.g8c48b4c02b_0_62*

---
✔**print()為字串，要轉換為整數，需要使用int(print())**

![](https://i.imgur.com/pls7Q05.png)

![](https://i.imgur.com/vMcb8bc.png)

![](https://i.imgur.com/ndlVaQY.png)


## ==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後，皆要加上逗號**
![](https://i.imgur.com/0negcXO.png)


### 閏年判斷
```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( )的範圍 < 終止值 (俗稱左閉右開)**
![](https://i.imgur.com/mvcXxn8.png)

![](https://i.imgur.com/J4AtnPX.png)

### 終極密碼
```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進位整數>)**