Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Index 0 1 2 3 4 5 6 7 8 9
Value 零 壹 貳 參 肆 伍 陸 柒 捌 玖
1
National Taiwan University
HW4_1 (20分)
• 題目:請寫程式讓使用者輸入一行字串,這行自串為一組數據資
料,資料格式為一個序號,以及對應的一個正整數。key為偶數時
相加,key為奇數時相減,請求出並印出結果。(序號有可能跳號)
• Input: • Input:
• 1:12 2:11 3:13 4:15 • 1:2 3:5
• Output: • Output:
•1 • -7
2
參考解答 National Taiwan University
3
HW4_2 (40分) National Taiwan University
• 題目:請寫一個麥當勞點餐系統,可以自動計算金額,並且檢查點餐
是否有錯誤。(輸入exit離開系統)
• Input:
• 用逗號分隔餐點(ex:1,2,5)
• Output:
• 若客人點了不在菜單的餐點:
• 抱歉我們沒有 n 號餐點
• 告知客人點了哪幾樣餐點和
總金額
• 您點了 x 份 xxx,一共 xx 元
4
National Taiwan University
5
National Taiwan University
HW4_3 (40分)
• 題目:請寫出程式隨機產生一個3*3的賓果盤 (數字範圍為1~9,且不
重複),使用者輸入 3 個正整數 (範圍1~9 ,且不重複)後,請確認是
否有成功連線(直、橫、斜對中一條即可)
• 輸出入:輸出隨機產生的表單、確認後的表單情況及是否成功連線
1 4 5 • Input: • Input:
6 2 7 •1 •1
8 9 3 •2 •2
•3 •7
• Output: • Output:
• 恭喜中獎! • 再接再厲!
6
National Taiwan University
HW4_3 Example
• 提示:
7
解題
National Taiwan University
• 所有中獎的index組合:
• 賓果盤 • 橫排:
• (0, 1, 2), (3, 4, 5), (6, 7, 8)
1 4 5
• 直排:
6 2 7 • (0, 3, 6), (1, 4, 7), (2, 5, 8)
8 9 3 • 對角線:
• (0, 4, 8), (2, 4, 6)
• index
• 檢查以上所有組合中,是否有包含三個*的組合
0 1 2
• 是 中獎
3 4 5
• 否 沒中獎
6 7 8
8
National Taiwan University
0 1 2
3 4 5
6 7 8
9
National Taiwan University
• 讓使用者輸入號碼,並且修改賓果盤
10
National Taiwan University
• 橫排:
• (0, 1, 2), (3, 4, 5), (6, 7, 8)
• 直排:
• (0, 3, 6), (1, 4, 7), (2, 5, 8)
• 對角線:
• (0, 4, 8), (2, 4, 6)
11
National Taiwan University
fuction
顏安孜 An-Zi Yen
azyen@nlg.csie.ntu.edu.tw
National Taiwan University
print()
• print([object, ...], *, sep=' ', end='\n', file=sys.stdout)
• 印出參數 (parameter) object 的內容, sep 為分隔符號, end 為結
尾符號, file 為輸出串流裝置,預設為 sys.stdout ,即是標準輸出
裝置,通常會是螢幕
13
函式 (fuction)
National Taiwan University
• 重複使用程式的第一步是使用函式
• 函式是一種有名稱、獨立的程式片段
• 可以接收任何數量和型態的輸入參數,並回傳任何數量和型態的輸
出結果
• 將相關的程式指令組在一起,讓整體程式更為模組化 (Modularization)
• 我們要做的事情:
• 定義
• 呼叫
14
函式的語法
National Taiwan University
def <funcName>(<parameters>):
<body>
• def:函式定義 (define),是複合指令,因此需以冒號結尾,且其
本體指令群需縮排一層
• <funcName>:函式的名稱 (不可使用 Python 保留字,且需符合
Python 識別字格式的規定)
• <parameters>:函式的參數 (0 或多個)
• <body>:函式的本體指令群
15
用 def 定義函式 Python 程式的撰寫風格: National Taiwan University
函式前後均空 2 行
參數
引數
16
函式的回覆值與執行流程
National Taiwan University
• 回覆值的函式:函式在執行完畢會回覆值給呼叫程式
• 語法:在函式最後加上 return 指令,後面接一個或多個值或表示式
def <funcName>(<parameters>):
...
return <values>
17
National Taiwan University
18
National Taiwan University
• 函式的參數與函式內的變數都是區域變數
• 區域變數只能在其所定義的區域中使用,在該區域以外就無法使用
• 區域變數的壽命:函式開始執行時開始生命,函式執行完畢就結束
19
練習
National Taiwan University
• Example:
• Input:
• a=3
•b=5
• c = 100
• Output:
• 最大值為 c
20
參考解答
National Taiwan University
21
National Taiwan University
return
22
function 中的 function
National Taiwan University
23
全域變數 (Global variable)
National Taiwan University
• 變數在所有地方都可使用
在函式中絕對不要
使用全域變數,應
該以參數方式將值
全域變數 傳給函式
24
National Taiwan University
• 當區域變數名稱與全域變數名稱
相同,區域變數會遮蓋全域變數
25
Math Library National Taiwan University
• https://docs.python.org/3/library/math.html 26
National Taiwan University
Import
27
National Taiwan University
time
• 算這一段code的執行時間
28
National Taiwan University
Random
函數 說明
randint(a, b) 回傳從 a 到 b 之間的整數。
choice(seq) 回傳從 seq 中的任一元素。
shuffle(x[, random]) 攪亂 x 中元素的順序。
random() 回傳 0 到 1 之間的數字。
29
National Taiwan University
30
簡單陳述 import from as
National Taiwan University
• 加上 as 後就能將原本模組
中的名稱改成自訂的識別字
31
練習
National Taiwan University
32
參考解答
National Taiwan University
33
主函式 (Main function) National Taiwan University
34
練習: Craps
National Taiwan University
• Craps賭博遊戲 – 骰兩個骰子
• 第一次搖骰子
• 如果搖出了7點或11點 - 玩家勝
• 如果搖出了2點、3點或12點 - 莊家勝
• 如果搖出其他點數 - 遊戲繼續
• 繼續
• 如果搖出了7點 - 莊家勝
• 如果搖出了第一次搖的點數 - 玩家勝
• 如果搖出了其他點數 - 遊戲繼續
35
National Taiwan University
36
National Taiwan University
HW5
1. 命名方式:
• 學號_HW5_1.py
• 學號_HW5_2.py • 存成一份壓縮檔
• 學號_HW5_3.py • 命名為 01234567_HW5.zip
• 例如: 01234567_HW5_1.py
2. 繳交程式碼即可 (修正版的作業需繳交報告)
3. 第一版作業繳交期限: 2020/11/4(三) 23:59:59
4. 修正版作業繳交期限: 2020/11/8(日) 23:59:59
5. 上傳至數位學習平台(iLMS) 37
National Taiwan University
HW5_1 (30分)
• 題目:有一分數序列 2/1,3/2,5/3,8/5,13/8,21/13 …,請寫
程式求出這個數列的前n項之和
• Input:
• n = 20
• Output:
• 32.660260798641637
• Input:
•n=4
• Output:
• 6.7666666666666675
38
National Taiwan University
HW5_2 (30分)
• 題目:請寫出程式讓使用者任意從52張無任何順序排列的撲克牌(不含
鬼牌)抽出n張牌。並且從n張牌中幫使用者找到其中排序第m大的牌。
• 數字大小依據 K > Q > J > 10 > … > 2 > A 的順序排列
• 花色大小為♠ > ♥ > ♦ > ♣
• 先依照數字比較撲克牌之間的大小,若遇到相同數字,再比較花色
• (本題開放import library https://docs.python.org/3.8/library/)
• Input:
• n 和 m (分別為整數,若n為-1則停止程式)
• Output:
• 卡片
39
National Taiwan University
HW5_2
• 提示:
• sort()
• sorted()
每一輪會把抽出來
的牌放回去重新洗
牌,所以不會有牌
被抽完的狀況
40
National Taiwan University
HW5_3 (40分)
• 題目: 做一個骰寶遊戲, 讓使用者下注
(https://zh.wikipedia.org/wiki/%E9%AA%B0%E5%AF%B6
• 1. 使用者輸入下注的項目
1) 比大小(三骰總和為3或18則莊家贏):賠率 1:1
2) 壓其中兩個骰子的組合:賠率 1:10
3) 壓三個骰子都為一樣的值: 賠率 1:30
• 2. 依照輸入的下注項目輸入下注細節
1) 比大小: 輸入1代表壓大(總和11-17);輸入2代表壓小(總和4-10)
2) 壓其中兩個骰子的組合: 輸入兩個1-6的數值, ex: 1,3 (分兩次輸入)
3) 壓三個骰子都為一樣的值: 輸入一個1-6的數值, ex: 1
• 3. 使用者輸入下注金額
• 4. 輸出勝負結果 (結果&骰子點數) 41
National Taiwan University
HW5_3
分兩次輸入
42
LAB 5-1 終極密碼 National Taiwan University
• 規則:
• 一人當莊家,從指定數字範圍(例如 1–100)中選出一個正整數當密碼,
而且不能讓其他玩家知道。
• 玩家輪流猜數字,每猜一個數字,莊家就要告知密碼介於何範圍,一直
到密碼被猜中為止(例如密碼是 70,玩家猜 20,這時莊家要告知密碼
介於 20 至 100 之間)。
• 提示:
• randint():產生隨機整數
• input():讓使用者輸入內容
• int():將字串轉換成整數
• while loop:讓使用者重複猜數字
43
National Taiwan University
44
National Taiwan University
LAB 6-1
• 題目:給定一個 m*n 的二維矩陣,以及一個整數,請寫程式判斷
該數字是否在二維矩陣中。
• Example:
• Input:
• matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,50]]
• target = 13
• Input:
• Output:
• matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,50]]
• False • target = 3
• Output:
• True
45
j=0 j=1 j=2 j=3
參考解答
National Taiwan University
i=0 1 3 5 7
i=1 10 11 16 20
i=2 23 30 34 50
46