# 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進位整數>)**