--- tags: 勤益課程 title: 1101小考2 --- <style> .emp {color:red} .info {color:green} </style> # 第二次小考 ## 1101 Scripting 程式語言 :::info 注意事項 - 請在完成下列題目後,將檔案存放在以學號命名的目錄,壓縮後上傳至:arrow_right: [Dropbox 雲端](https://www.dropbox.com/request/BPCGV1FAa1MG9emcCF5Q) - 上傳時限為 10/30(六) 24:00以前,逾期視同未交。 - 請勿以任何形式抄襲其它同學的答案,若有發現,所有人一律0分。 - 若有參考網路上之程式碼,請於程式中註明出處,避免如上的抄襲疑慮。 ::: # 題目:三角形重心計算 請撰寫一個名為 triangle_zhonxin(a,b,c) 的求三角形重心函數,將之放在 pack 套件(目錄)下的 modu 模組(檔案)中,以提供其它程式呼叫使用。 ![](https://i.imgur.com/Chhcn63.png) 設三點為 A(x1,y1)、B(x2,y2)、C(x3,y3) 求重心 G 點的座標 (x,y) 三角形的重心公式如下: > x=(x1+x2+x3)/3 > y=(y1+y2+y3)/3 #### 執行畫面 參考1: ```=shell D:\py1101>py quiz2.py 請輸入三角形的3個頂點坐標 ------------------------------ 請輸入頂點a的坐標:1,1 請輸入頂點b的坐標:2,2 請輸入頂點c的坐標:3,3 ------------------------------ 此三角形的重心為:(2, 2) ``` 參考2: ```=shell D:\py1101>py quiz2.py 請輸入三角形的3個頂點坐標 ------------------------------ 請輸入頂點a的坐標:5,8 請輸入頂點b的坐標:9,11 請輸入頂點c的坐標:13,19 ------------------------------ 此三角形的重心為:(9, 13) ``` ## 提示 - 三個頂點坐標的輸入,需各自轉為 tuple - 輸入字串中的逗號(,)可用字串的split()方法拆開 - tuple() 方法可轉成 tuple 容器形態 - 呼叫 pack 套件下 modu 模組的 triangle_zhonxin 函數,需傳入 a,b,c 三個 tuple 變數<span class='info'>(白話:沒有pack目錄,pack目錄下沒有modu.py的話就是錯的)</span> - triangle_zhonxin 函數需回傳重心的坐標,該坐標也是一個 tuple 變數 - 整數經由除法計算後會變成浮點數 - 坐標計算後若有小數點,<span class='info'>請利用 round()四捨五入到整數</span> - 最後顯示重心坐標需使用F字串進行顯示 # 解答 ## quiz2.py ```python= import pack.modu as lib print('請輸入三角形的3個頂點坐標') print('-'*30) a=input("請輸入頂點a的坐標:") b=input("請輸入頂點b的坐標:") c=input("請輸入頂點c的坐標:") a = tuple(int(x) for x in a.split(",")) b = tuple(int(x) for x in b.split(",")) c = tuple(int(x) for x in c.split(",")) zhonxi_coordinate = lib.triangle_zhonxin(a, b, c) print('-'*30) print(f'此三角形的重心為:{zhonxi_coordinate}') ``` ## pack/modu.py ```python= def triangle_zhonxin(a, b, c): x = round((a[0]+b[0]+c[0])/3) y = round((a[1]+b[1]+c[1])/3) return (x,y) ```