{%hackmd @themes/orangeheart %} ## wk11_1116_CH7函式模組,期末專題 ### 醫放三 B1003210 應雨岑 1. hackMd 使用教學 - 封面、首頁、目錄 - 筆記內頁 2. 函式與模組 - 自訂函式 - 數值函式 - 字串函式 - 亂數模組 - 時間模組 ## 今日課程內容 <pre> 1. 期末專題介紹 2. 函式與模組 - time - random 3. 專案介紹 - github - 套件的安裝 - 以ping pong game之程式進行介紹 </pre> ## NOTE <pre> 函式模組重點: def,return 只要模組裡面有程式區塊就需要使用return 把time的模組匯成t --> import time as t 匯入time裡面的其他模組,因此在使用時就不需要寫成time.sleep而可直接寫sleep -->from time import sleep,ctime 在python中安裝程式的方法(安裝numpy) --> ! pip install numpy </pre> ## [ INCLASS PRACTICE ] * 計算執行一百萬次整數運算的時間 ```python import time #匯入一個time的模組 print("Hello......!") time.sleep(3) # 等待3秒 print("Kelly") ``` Hello......! Kelly ```python import time as t #把time的模組匯成t print("Hello......!") t.sleep(3) # 等待3秒 print("Kelly") ``` ```python from time import sleep,ctime,localtime,perf_counter print("Hello......!") sleep(3) # 就不需要再說time.sleep了,直接用sleep就可以了 print("Kelly") ``` ```python from time import sleep,ctime,localtime,perf_counter startTime= perf_counter() for i in range(11): print(i) endTime= perf_counter() print(f"{startTime},{endTime},{endTime-startTime}") #print(f"")的用法是""內可以放文字或是變數,只要用{}把變數包起來就可以了 ``` 0 1 2 3 4 5 6 7 8 9 10 2378108.7082513,2378108.7085243,0.00027299998328089714 ```python #from time import sleep,ctime,localtime,perf_counter startTime= perf_counter() for i in range(4): print(i) sleep(0.86) endTime= perf_counter() print(f"總運算時間,{endTime-startTime}") ``` 0 1 2 3 總運算時間,3.4434956000186503 ```python time1=localtime() time2=ctime() print(time1,"\n",time2) ``` time.struct_time(tm_year=2023, tm_mon=11, tm_mday=16, tm_hour=10, tm_min=51, tm_sec=8, tm_wday=3, tm_yday=320, tm_isdst=0) Thu Nov 16 10:51:08 2023 ```python import random as r inkey= input("按任意鍵再按enter為繼續執行,直接按enter則結束") while inkey!="": print(r.randint(1,6)) inkey= input("按任意鍵再按enter為繼續執行,直接按enter則結束") print("遊戲結束") #另解 print("-------------------------------------") while True: inkey=input("按任意鍵再按enter為繼續執行,直接按enter則結束") if len(inkey)>0: print(r.randint(1,6)) else: print("遊戲結束") break ``` 按任意鍵再按enter為繼續執行,直接按enter則結束 遊戲結束 ------------------------------------- 按任意鍵再按enter為繼續執行,直接按enter則結束1 1 按任意鍵再按enter為繼續執行,直接按enter則結束2 1 按任意鍵再按enter為繼續執行,直接按enter則結束3 2 按任意鍵再按enter為繼續執行,直接按enter則結束 遊戲結束 * 安裝 numpy 的程式 ```python ! pip install numpy ``` Requirement already satisfied: numpy in c:\users\user\anaconda3\lib\site-packages (1.24.3) ```python import turtle as t # turtle可以在畫面上畫圖 import os #可以讀取電腦上的資料(鍵盤...) player_a_score = 0 player_b_score = 0 ``` ## 全部的note <pre> W1 計算符號之間可以加空白鍵 <br> ** : 幾次方<br> sep="." : 分隔符號為. end="/" : 結束用/結束 在print內寫入%d : 放入參數答案 (最後在答案要加%) %s : 放入的答案為字串 %f : 放入的答案包含全部小數點 %.1f : 包含 1位小數點 %.3f : 包含 3位小數點 寫法如下- print("身高為%d cm,體重為%d kg,BMI為%.1f " % (height,weight,bmi)) print("顯示的文字",參數名字)<br> my_height = input("請輸入身高(cm)") : 可以輸入文字進去對話框 使用者輸入的文字要轉換成"int" ()<br> W2 print("姓名 成績") print("%3s %3d"%(name1,score1)) #按照字元數進行規則排列出一格表格格式 W3 **次方 //整除的數 /除以 %餘數 and 放在兩個運算子中間,判斷True or False,當兩個都為True才會是True or 放在兩個運算子中間,判斷True or False,當兩個都為False才會是False W4 if,else,elif需使用冒號:還有縮排來寫code .upper可以讓程式不用判斷大小寫 W5 串列list用中括弧括起來 for和其他語法一樣,他同樣也是需要用到:還有縮排來寫程式 W6 break會跳出這個迴圈 continue跳出執行這個code 繼續執行下一個i的程式 None 為一個什麼都沒有的數字,但是他可以做加減乘除的運算 W7 串列名稱=[1,2,3,...] #可以放字串、數字等等的 另外也可以宣告空的串列list=[] 多為變數的宣告 list=[["1"],["1,2"],["1,2,3"]] 如果想要顯示第二個串列的第一個內容:print(list[1][0])) # 0表示第一個資料,1表示第二個-意思是程式計算的方式是由0開始數 若想檢索特定的元素可以使用list[起始索引,終止索引,間隔]的方式進行 也可以索引-值,表示從最後一個開始數list[-1] len(list)可以計算元素數量 max(list)可以找到元素內最大值 list.index(...)可以找...在清單中第幾個 .count 可以數...出現幾次 .append 插入一個元素在最後 .insert(3,8)插入8某一個位置(第三個) .pop 移除最後一個元素 W8 divmod(7,3) #答案為(2,1) 表示(商,餘數) 元組內的元素不能修改,但可以轉換成串列 字典是以大括號呈現{} 由小排到大 score.sort() 由大排到小 score.sort(reverse=True) 反轉是錯誤的則不用反轉,由小排到大 score.sort(reverse=False) W9 字典語法 dict_血型個性={"A":"穩重","B":"樂觀","O":"堅強","AB":"自然"} W10 下載code的md檔案--用於期末的hackMd筆記 自訂一個函式 def sayhello(): 呼叫這個sayhello程式 sayhello() 沒有設預設值 def sayhello2(name): #不會出現東西,因為沒有寫預設是什麼 有設定預設值 def sayhello2(name= "my friend"): #沒有特別寫name是什麼,就會使用預設值 如果有一個參數有設預設值另一個沒設,則有設預設值的函數就要放在靠後面 在函式def內設的參數var1=1都是區域變數,如果跳出這個函式後就不存在這個設定,因此如要變成全域函數要用 global var1 \n var1=1 </pre> ## [ afterclass practice ] > 1. 教學影音: >- 新手入門 #07 Function (函式) >- 新手入門 #09 Module (模組) >2. 期末分組名單 >- B1003208 江翌榛、 B1003210 應雨岑 B1003204鄭玟琳 * ## 教學影音 1. 新手入門 #07 Function (函式) 影片內容主要就是在教和課本相似的內容,包括如何建立一個函式或是宣告函式,另外也有講一些特殊的用法像區域變數、全域變數 而有些是課本沒有提到的 <pre> def hi(name,year): print(f"{name}今年{year}歲了") hi("小明",5) </pre> 2. 新手入門 #09 Module (模組) 函式的設定只能用在原本用的那個區塊(檔案)中,如果要在其他地方使用這個函是即須宣告函式import area,也可以重新命名函式的名稱import my_module as a再輸入a.area(),另外也可以只匯入其中一個函式from my_module import area ## [ self practice ] * 以12小制顯示現在時刻 ```python from time import localtime,time #print(localtime()) 測試 #list=localtime() 測試 #print(list) 測試 if list.tm_hour>12: hour=list.tm_hour-12 print("現在時刻:下午",hour,"點",list.tm_min,"分",list.tm_sec,"秒") else: print("現在時刻:下午",list.tm_hour,"點",list.tm_min,"分",list.tm_sec,"秒") ``` 現在時刻:下午 11 點 51 分 47 秒 * 買菜 ```python #媽媽去買菜,希望在找錢時能以最少硬幣數的方法拿到 def buy(money): a=b=c=d=0 a=int(money) if a>=50: b=a%50 a = a/50 if b>10: c=b%10 b=b/10 if c>5: d=c%5 c=c/5 else: d=c else: if b>5: d=b%5 c=b/5 else: b=c else: #<50 if a>10: c=a%10 b=a/10 a=0 if c>5: d=c%5 c=c/5 else: d=c c=0 else: #a<10 if a>5: d=a%5 c=a/5 a=b=0 else: d=a a=b=c=0 return a,b,c,d a,b,c,d=buy(input("請輸入換幣金額")) print("50元有%d個,10元有%d個,5元有%d個,1元有%d個"%(a,b,c,d)) ``` 請輸入換幣金額127 50元有2個,10元有2個,5元有1個,1元有2個