{%hackmd @themes/orangeheart %} ## wk10_1109_Ch7函式與模組,hackMd ### 醫放三 B1003210 應雨岑 1. hackMd 使用教學 - 封面、首頁、目錄 - 筆記內頁 2. 函式與模組 - 自訂函式 - 數值函式 - 字串函式 - 亂數模組 - 時間模組 ## 今日課程內容 <pre> 1. hackMd 使用教學 封面、首頁、目錄 筆記內頁 2. 函式與模組 自訂函式 時間模組 </pre> ## NOTE <pre> 下載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> ## [ INCLASS PRACTICE ] * 單字和定義的字典 ```python word_dict = { "apple": "a round fruit with red or green skin and sweet flesh", "dog": "a domesticated mammal that is related to the wolves", "computer": "an electronic device for storing and processing data", "ocean": "a large body of saltwater that covers most of the Earth's surface", "book": "a written or printed work consisting of pages glued or sewn together along one side and bound in covers", "mountain": "a large natural elevation of the earth's surface rising abruptly from the surrounding level" } print("歡迎來到英文單字練習!") score = 0 for word, definition in word_dict.items(): print(f"定義: {definition}") user_input = input(f"請輸入單字的拼寫: ").strip().lower() #.strip()可以把空白鍵刪掉 if user_input == word: print("正確!") score += 1 else: print(f"錯誤。正確答案是 '{word}'。") print(f"練習結束。您的得分是 {score}/{len(word_dict)}。") ``` 歡迎來到英文單字練習! 定義: a round fruit with red or green skin and sweet flesh 請輸入單字的拼寫: apple 正確! 定義: a domesticated mammal that is related to the wolves 請輸入單字的拼寫: dogs 錯誤。正確答案是 'dog'。 定義: an electronic device for storing and processing data 請輸入單字的拼寫: computer 正確! 定義: a large body of saltwater that covers most of the Earth's surface 請輸入單字的拼寫: sea 錯誤。正確答案是 'ocean'。 定義: a written or printed work consisting of pages glued or sewn together along one side and bound in covers 請輸入單字的拼寫: book 正確! 定義: a large natural elevation of the earth's surface rising abruptly from the surrounding level 請輸入單字的拼寫: mountains 錯誤。正確答案是 'mountain'。 練習結束。您的得分是 3/6。 ```python #以下是一個簡單的猜字遊戲,使用字典作為遊戲中的單詞庫。 #玩家需要猜測英文單詞的意思,並獲得積分。程式會隨機選取一個單詞,玩家需要輸入其意思。 import random # 單詞庫,包含英文單詞和它們的中文意思 word_dict = { "apple": "蘋果", "banana": "香蕉", "cat": "貓", "dog": "狗", "elephant": "大象", "flower": "花朵", "guitar": "吉他", # 添加更多單詞... } score = 0 # 遊戲主迴圈 while True: # 從單詞庫中隨機選擇一個單詞 word, meaning = random.choice(list(word_dict.items())) print(f"請問 '{word}' 的中文意思是?") player_guess = input("請輸入中文意思: ") # 檢查答案是否正確 if player_guess == meaning: print("正確!加10分。\n") score += 10 else: print(f"答錯了,正確答案是 '{meaning}'。\n") # 顯示分數 print(f"你的分數: {score} 分\n") # 問用戶是否繼續遊戲 play_again = input("是否要繼續遊戲?(輸入 'quit' 退出遊戲,其他任意鍵繼續): ") if play_again.lower() == 'quit': break print("遊戲結束,你的最終分數是:", score) ``` 請問 'flower' 的中文意思是? 請輸入中文意思: 花 答錯了,正確答案是 '花朵'。 你的分數: 0 分 是否要繼續遊戲?(輸入 'quit' 退出遊戲,其他任意鍵繼續): 請問 'banana' 的中文意思是? 請輸入中文意思: 香蕉 正確!加10分。 你的分數: 10 分 是否要繼續遊戲?(輸入 'quit' 退出遊戲,其他任意鍵繼續): 請問 'cat' 的中文意思是? 請輸入中文意思: 貓 正確!加10分。 你的分數: 20 分 是否要繼續遊戲?(輸入 'quit' 退出遊戲,其他任意鍵繼續): 請問 'dog' 的中文意思是? 請輸入中文意思: 狗 正確!加10分。 你的分數: 30 分 是否要繼續遊戲?(輸入 'quit' 退出遊戲,其他任意鍵繼續): 請問 'banana' 的中文意思是? 請輸入中文意思: 相 答錯了,正確答案是 '香蕉'。 你的分數: 30 分 是否要繼續遊戲?(輸入 'quit' 退出遊戲,其他任意鍵繼續): quit 遊戲結束,你的最終分數是: 30 * sayhello程式 ```python def sayhello(): print("hello, world!!!") sayhello() ``` hello, world!!! ```python sayhello() #呼叫這個sayhello程式 ``` ```python def GetArea(w,h): area=w*h return area print(GetArea(5,10)) area1=GetArea(h=10,w=3) print(area1) ``` 50 30 ```python def sayhello2(name): print("Hello,",name) sayhello2("Kelly") #sayhello2() #不會出現東西,因為沒有寫預設是什麼 ``` Hello, Kelly ```python def sayhello2(name= "my friend"): print("Hello,",name) sayhello2("Kelly") sayhello2() #沒有特別寫name是什麼,就會使用預設值 ``` Hello, Kelly Hello, my friend ```python def Circle(radius): area= radius*radius*3.14 length=2*rdius*3.14 return area,length ``` * 攝氏溫度轉華氏溫度 ```python # 華=攝*1.8+32 def Temperature(C): F=C*1.8+32 return F Temperature(38) C=float(input("請輸入攝氏溫度")) print("攝氏溫度%.2f時華氏溫度為%.2f" %(C,Temperature(C))) ``` 請輸入攝氏溫度38 攝氏溫度38.00時華氏溫度為100.40 * 匯入時間的函式模組 ```python import time #匯入時間的函式模組 time.time() time.localtime() ``` time.struct_time(tm_year=2023, tm_mon=11, tm_mday=9, tm_hour=12, tm_min=3, tm_sec=5, tm_wday=3, tm_yday=313, tm_isdst=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":"自然"} </pre> ## [ afterclass practice ] > 1. 綜合演練 選擇題1-10 (需抄題在markdown cell ; 有程式碼的題目要有code cell ) > 2. 教學影音: > - 新手入門 #07 Function (函式) > - 新手入門 #09 Module (模組) * 綜合演練 ### ( D ) 1. 函式的傳回值,下列何者正確? (A)無傳回值 (B) 1 個傳回值 (C) 2 個傳回值 (D)以上皆可 #### 因為可以沒有return,也可以有1個2個3個... ```python def test1(): print("hi!!!") def test2(length,width): area=length*width return area def test3(radius): carea=radius*radius*3.14 long=2*radius*3.14 return carea,long test1() print(test2(3,4)) print(test3(5)) ``` hi!!! 12 (78.5, 31.400000000000002) ### ( C ) 2. print(max([4,8,3,9,2,6])) 顯示的結果為何? (A)4 (B)6 (C)9 (D)2 #### 因為max是python內建的函式,為取得串列的最大值 ```python print(max([4,8,3,9,2,6])) ``` 9 ### ( B ) 3. print(pow(2,5,7))顯示的結果為何? (A)2 (B)4 (C)5 (D)7 #### 因為意思是(2^5)/7的餘數,因此為32/7=4...4,餘數是4 ```python print(pow(2,5,7)) ``` 4 ### ( A ) 4. print("hospital".replace("s","t")) 顯示的結果為何? (A)hotpital (B)hospisal (C)hospital (D)hotpisal #### 因為replace是取代字裡面的特定字母,這題是要將S取代成T,因此就會變成hotpital ```python print("hospital".replace("s","t")) ``` hotpital ### ( A ) 5. print("hospital".startswith("ho")) 顯示的結果為何? (A)True (B)False (C)hospital (D)ho #### 因為startwith是用來查看字是不是以"ho"作為開頭 ```python print("hospital".startswith("ho")) ``` True ### ( C ) 6. print("hospital".find("p")) 顯示的結果為何? (A)-1 (B)0 (C)3 (D)4 #### 因為是搜尋P在字裡的第幾個位置,從0開始算 ```python print("hospital".find("p")) ``` 3 ### ( A ) 7. 下列何者不可能是 print(random.randint(1,10)) 的顯示結果? (A)0 (B)5 (C)8 (D)10 #### 因為是從1-10中隨機取一個亂數,而0不在此範圍內 ```python import random for i in range(50): print(random.randint(1,10),end=",") ``` 10,6,5,2,8,3,6,2,2,9,9,4,7,10,10,6,7,5,8,7,6,5,4,7,8,2,10,3,9,1,9,9,4,7,3,8,8,2,10,6,1,9,9,10,4,2,4,10,3,5, ### ( D ) 8. 下列何者不可能是 print(random.randrange(0,15,3)) 的顯示結果? (A)0 (B)3 (C)12 (D)15 #### 因為是從0-15每隔3個位置當中隨機取一個整數,因此可能的值為0,3,,6,9,12,"但是"不包含15喔 ```python import random for i in range(50): print(random.randrange(0,15,3),end=",") ``` 6,0,0,6,6,3,9,12,3,6,3,0,12,0,3,3,3,6,0,12,9,12,9,9,3,3,12,9,9,6,0,0,12,12,0,12,3,12,12,6,0,12,6,0,3,6,3,3,9,9, ### ( B ) 9. 下列哪一個函式可讓程式停止執行一段時間? (A)time (B)sleep (C) perf_counter (D)localtime #### 因為sleep(n)是一個時間模組,它可以讓程式停止執行n秒 ```python #可以用在一個倒數計時的程式當中 import time print("這是一個簡單的計時器程式") # 設定計時時間 countdown_time = 5 # 單位:秒 # 進行計時 while countdown_time > 0: print(f"剩餘時間: {countdown_time} 秒") time.sleep(1) # 暫停 1 秒 countdown_time -= 1 print("時間到!") ``` 這是一個簡單的計時器程式 剩餘時間: 5 秒 剩餘時間: 4 秒 剩餘時間: 3 秒 剩餘時間: 2 秒 剩餘時間: 1 秒 時間到! ### ( C ) 10. localtime 傳回的 tm_min 資料範圍為何? (A)1到60 (B)0到60 (C)0到59 (D)1到59 #### 因為時間就是00-59分 * ## 教學影音 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 ] * 身高轉換 ```python #輸入"呎"讓程式轉換成"公分" def height(feet): cm=30.48*feet return cm feet=float(input("請輸入身高,以呎為單位")) print("你的身高是",height(feet)) ``` 請輸入身高,以呎為單位5.8 你的身高是 176.784 * 分數系統 ```python grade1=int(input("請輸入第一位同學的分數")) grade2=int(input("請輸入第二位同學的分數")) grade3=int(input("請輸入第三位同學的分數")) grade4=int(input("請輸入第四位同學的分數")) print("最高分為",max([grade1,grade2,grade3,grade4])) print("最低分為",min([grade1,grade2,grade3,grade4])) print("總 分 為",sum([grade1,grade2,grade3,grade4])) print("平 均 為",sum([grade1,grade2,grade3,grade4])/4) ``` 請輸入第一位同學的分數83 請輸入第二位同學的分數68 請輸入第三位同學的分數92 請輸入第四位同學的分數91 最高分為 92 最低分為 68 總 分 為 334 平 均 為 83.5
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up