├── .DS_Store ├── .devcontainer └── devcontainer.json ├── .gitignore ├── Concurrency └── README.md ├── README.md ├── TQC ├── PYD1010.py ├── PYD102.py ├── PYD104.py ├── PYD106.py ├── PYD108.py ├── PYD202.py ├── PYD204.py ├── PYD206.py ├── PYD208.py ├── PYD210.py ├── PYD302.py ├── PYD304.py ├── PYD306.py ├── PYD308.py ├── PYD310.py ├── PYD402.py ├── PYD404.py ├── PYD406.py ├── PYD408.py ├── PYD410.py ├── PYD502.py ├── PYD504.py ├── PYD506.py ├── PYD508.py ├── PYD510.py ├── PYD602.py ├── PYD604.py ├── PYD606.py ├── PYD608.py ├── PYD610.py ├── PYD702.py ├── PYD704.py ├── PYD706.py ├── PYD708.py ├── PYD710.py ├── PYD802.py ├── PYD804.py ├── PYD806.py ├── PYD808.py ├── PYD810.py ├── PYD902.py ├── PYD904.py ├── PYD906.py ├── PYD908.py └── PYD910.py ├── chat_gpt ├── .gitignore ├── README.md ├── images │ ├── pic1.png │ ├── pic2.png │ └── pic3.png ├── index.ipynb ├── index1.ipynb └── requirements.txt ├── content.py ├── gemini_api ├── README.md └── images │ ├── pic1.png │ └── pic2.png ├── gemini_line_bot └── README.md ├── generator_decorator └── README.md ├── line ├── README.md ├── image1.png ├── image10.png ├── image11.png ├── image12.png ├── image13.png ├── image14.png ├── image2.png ├── image3.png ├── image4.png ├── image5.png ├── image6.png ├── image7.png ├── image8.png ├── image9.png └── line_log_in.png ├── line_bot ├── README.md └── images │ ├── .DS_Store │ ├── pic1.png │ ├── pic10.png │ ├── pic11.png │ ├── pic12.png │ ├── pic13.png │ ├── pic14.png │ ├── pic15.png │ ├── pic16.png │ ├── pic17.png │ ├── pic18.png │ ├── pic2.png │ ├── pic3.png │ ├── pic4.png │ ├── pic5.png │ ├── pic6.png │ ├── pic7.png │ ├── pic8.png │ └── pic9.png ├── mini_conda └── README.md ├── pydantic ├── README.ipynb ├── README.md ├── README1.ipynb ├── data.json ├── 個股日成交資訊.csv ├── 個股日成交資訊.ipynb ├── 學生分數.csv ├── 學生分數.ipynb ├── 新北市食品工廠清冊.json ├── 新空氣品質aqi.csv ├── 新空氣品質aqi.json ├── 空氣品質aqi.csv ├── 空氣品質aqi.json ├── 空氣品質aqi_csv.ipynb └── 空氣品質aqi_json.ipynb ├── python內建的資料結構 ├── README.md ├── array1.py ├── biglottery.py ├── bubble.py ├── initial2.py ├── min.py ├── names.txt ├── ninenine.py ├── sale_s.py ├── score1.py ├── sequential.py ├── sequential1.py ├── vote.py └── 學生成績.ipynb ├── python型別提示 ├── README.md └── images │ ├── pic04.png │ ├── pic05.png │ ├── pic06.png │ ├── pic1.png │ ├── pic2.png │ └── pic3.png ├── python基礎與資料輸出 ├── .DS_Store ├── README.md └── images │ └── pic1.png ├── requirements.txt ├── sqlalchemy_orm ├── README.md ├── lesson1.ipynb └── student.db ├── vscode設定 └── README.md ├── 上課用目錄 └── .DS_Store ├── 使用Dock容器開發 └── README.md ├── 函式和comprehension ├── README.md ├── callByReference.py ├── callByValue1.py ├── function1.py ├── function2.py ├── function3.py ├── return1.py └── test.py ├── 匿名函數lambda └── README.md ├── 國發會驗收 ├── README.md └── README解答.md ├── 字串處理 ├── .DS_Store ├── README.md ├── email.py ├── taiwanId.py └── wordLink.py ├── 學習prompt └── README.md ├── 小程式 ├── README.md └── images │ ├── pic1.png │ └── pic2.png ├── 數值與函數進階運用 └── README.md ├── 數值計算與資料輸入 ├── README.md ├── bmi.py ├── circle_s.py ├── complex.py ├── complex_s.py ├── discount.py ├── images │ └── pic1.png ├── ladder.py ├── mathop.py ├── password.py └── plus_s.py ├── 條件分析 ├── README.md ├── bmi.py ├── circle_s.py ├── complex.py ├── complex_s.py ├── discount.py ├── images │ └── pic1.png ├── ladder.py ├── mathop.py ├── password.py └── plus_s.py ├── 模組和套件 ├── README.md └── images │ └── pic1.png ├── 檔案存取 ├── .DS_Store ├── .ipynb_checkpoints │ ├── README-checkpoint.ipynb │ ├── csvRead-checkpoint.ipynb │ └── jsonReader-checkpoint.ipynb ├── 1d.png ├── 2d.png ├── 3d.png ├── 4d.png ├── README.ipynb ├── aqx_p_488.json ├── city.db ├── csvRead.ipynb ├── data.json ├── data.txt ├── data1.txt ├── ex1.csv ├── ex2.csv ├── ex3.csv ├── ex4.csv ├── ex5.csv ├── ex6.csv ├── ex7.csv ├── example.json ├── jsonReader.ipynb ├── lesson11_1 │ ├── class1.csv │ ├── class2.csv │ ├── class3.csv │ ├── lesson11_2.ipynb │ ├── main.py │ ├── names.txt │ └── tools.py ├── lesson12_1 │ ├── 3年6班.xlsx │ ├── TreeData.xlsx │ ├── main.py │ ├── names.txt │ ├── test1.ipynb │ ├── test2.ipynb │ └── tools.py ├── lesson13_1 │ ├── 3-5.csv │ ├── 3班.xlsx │ ├── main.py │ ├── names.txt │ ├── test1.ipynb │ ├── test2.ipynb │ └── tools.py ├── lesson15 │ ├── lesson15_1.ipynb │ ├── lesson15_2.ipynb │ ├── 天氣預測1天.csv │ └── 天氣預測1天.xlsx ├── names.txt ├── relativity ├── result-readlines.txt ├── sample5.py ├── score.json ├── score.txt ├── train.db ├── ttest.csv ├── 個股日成交資訊.csv ├── 個股日成交資訊.ipynb ├── 各鄉鎮市區人口密度.csv ├── 學習用範例來源檔.zip ├── 新北市公共自行車租賃系統.json ├── 新北市食品工廠清冊.csv ├── 新北市食品工廠清冊.json ├── 歷年國內主要觀光遊憩據點遊客人數月別統計.csv └── 縣市長 │ ├── 縣表3-1-701(新竹縣).xls │ ├── 縣表3-1-702(苗栗縣).xls │ ├── 縣表3-1-703(彰化縣).xls │ ├── 縣表3-1-704(南投縣).xls │ ├── 縣表3-1-705(雲林縣).xls │ ├── 縣表3-1-706(嘉義縣).xls │ ├── 縣表3-1-707(屏東縣).xls │ ├── 縣表3-1-708(宜蘭縣).xls │ ├── 縣表3-1-709(花蓮縣).xls │ ├── 縣表3-1-710(臺東縣).xls │ ├── 縣表3-1-711(澎湖縣).xls │ ├── 縣表3-1-712(基隆市).xls │ ├── 縣表3-1-713(新竹市).xls │ ├── 縣表3-1-714(嘉義市).xls │ ├── 縣表3-1-801(金門縣).xls │ └── 縣表3-1-802(連江縣).xls ├── 正規則表達式 └── README.md ├── 物件和類別 ├── README.md └── sample1.ipynb ├── 系統和時間 └── README.md ├── 網路下載小專案 ├── Pikachu.py └── doramo.py ├── 處理excel ├── .DS_Store ├── README.md ├── censuspopdata.xlsx ├── dimensions.xlsx ├── example.xlsx ├── example_copy.xlsx ├── freezeExample.xlsx ├── images │ ├── pic1.png │ ├── pic2.png │ ├── pic3.png │ ├── pic4.png │ ├── pic5.png │ └── pic6.png ├── lesson1.ipynb ├── lesson2.ipynb ├── merged.xlsx ├── produceSales.xlsx ├── sampleChart.xlsx ├── styles.xlsx ├── updateProduceSales.xlsx ├── writeFormula.xlsx └── 縣市長 │ ├── 縣表3-1-701(新竹縣).xls │ ├── 縣表3-1-702(苗栗縣).xls │ ├── 縣表3-1-703(彰化縣).xls │ ├── 縣表3-1-704(南投縣).xls │ ├── 縣表3-1-705(雲林縣).xls │ ├── 縣表3-1-706(嘉義縣).xls │ ├── 縣表3-1-707(屏東縣).xls │ ├── 縣表3-1-708(宜蘭縣).xls │ ├── 縣表3-1-709(花蓮縣).xls │ ├── 縣表3-1-710(臺東縣).xls │ ├── 縣表3-1-711(澎湖縣).xls │ ├── 縣表3-1-712(基隆市).xls │ ├── 縣表3-1-713(新竹市).xls │ ├── 縣表3-1-714(嘉義市).xls │ ├── 縣表3-1-801(金門縣).xls │ └── 縣表3-1-802(連江縣).xls └── 重複執行 ├── README.md ├── commonfactor.py ├── continue.py ├── forNest2.py ├── fornest1.py ├── guess.py ├── inputLoop.py ├── loop1.py ├── loop2.py ├── nestedLoop1.py ├── range1.py ├── various_loop1.py ├── various_loop2.py ├── while1_s.py ├── while2.py └── wordLink.py /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/.DS_Store -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the 2 | // README at: https://github.com/devcontainers/templates/tree/main/src/python 3 | { 4 | "name": "Python 3", 5 | // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile 6 | "image": "mcr.microsoft.com/devcontainers/python:1-3.10-bullseye", 7 | "features": { 8 | "ghcr.io/devcontainers/features/git:1": {}, 9 | "ghcr.io/devcontainers-contrib/features/gh-cli:1": {}, 10 | "ghcr.io/wxw-matt/devcontainer-features/command_runner:0": {}, 11 | "ghcr.io/wxw-matt/devcontainer-features/script_runner:0": {} 12 | }, 13 | "runArgs": ["--name", "python"], 14 | 15 | // Features to add to the dev container. More info: https://containers.dev/features. 16 | // "features": {}, 17 | 18 | // Use 'forwardPorts' to make a list of ports inside the container available locally. 19 | // "forwardPorts": [], 20 | 21 | // Use 'postCreateCommand' to run commands after the container is created. 22 | "postCreateCommand": "pip3 install --user -r requirements.txt", 23 | "customizations": { 24 | "vscode": { 25 | "extensions": [ 26 | "MS-CEINTL.vscode-language-pack-zh-hant", 27 | "ms-toolsai.jupyter" 28 | ] 29 | } 30 | } 31 | 32 | // Configure tool-specific properties. 33 | // "customizations": {}, 34 | 35 | // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. 36 | // "remoteUser": "root" 37 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | 上課內容/日月光/test.ipynb 3 | 上課內容/日月光/.ipynb_checkpoints/test-checkpoint.ipynb 4 | -------------------------------------------------------------------------------- /Concurrency/README.md: -------------------------------------------------------------------------------- 1 | # Concurrency 2 | - 執行緒 3 | - 次程序 4 | 5 | ## 啟動和結束執行緒 6 | 7 | - 建立執行緒必需要執行start()才會啟動 8 | - 執行緒的執行完全由作業係統管理 9 | 10 | ```python 11 | import time 12 | #建立一個執行緒要執行的function 13 | def countdown(n): 14 | while n > 0: 15 | print('倒數計時:',n) 16 | n -= 1 17 | time.sleep(5) 18 | 19 | 20 | #建立和啟動執行緒 21 | from threading import Thread 22 | t = Thread(target=countdown, args=(10,)) 23 | t.start() 24 | 25 | 輸出結果:============= 26 | 倒數計時: 10 27 | 倒數計時: 9 28 | 倒數計時: 8 29 | 倒數計時: 7 30 | 倒數計時: 6 31 | 倒數計時: 5 32 | 倒數計時: 4 33 | 倒數計時: 3 34 | 倒數計時: 2 35 | 倒數計時: 1 36 | ``` 37 | 38 | ### is_alive()檢查執行緒是否還在執行 39 | 40 | ```python 41 | import time 42 | #建立一個執行緒要執行的function 43 | def countdown(n): 44 | while n > 0: 45 | print('倒數計時:',n) 46 | n -= 1 47 | time.sleep(5) 48 | 49 | 50 | #建立和啟動執行緒 51 | from threading import Thread 52 | t = Thread(target=countdown, args=(10,)) 53 | t.start() 54 | 55 | #由主執行緒執行以下程式碼, 並使用is_alive()檢查是否次執行緒還在執行 56 | while t.is_alive(): 57 | print('still running') 58 | time.sleep(1) 59 | else: 60 | print('Completed') 61 | 62 | 63 | 輸出結果:================ 64 | 倒數計時: 2 65 | still running 66 | still running 67 | still running 68 | still running 69 | still running 70 | 倒數計時: 1 71 | still running 72 | still running 73 | still running 74 | still running 75 | still running 76 | Completed 77 | ``` 78 | 79 | ### 使用join()等待執行緒結束 80 | 81 | ```python 82 | import time 83 | #建立一個執行緒要執行的function 84 | def countdown(n): 85 | while n > 0: 86 | print('倒數計時:',n) 87 | n -= 1 88 | time.sleep(1) 89 | 90 | 91 | #建立和啟動執行緒 92 | from threading import Thread 93 | t = Thread(target=countdown, args=(10,)) 94 | t.start() 95 | 96 | #由主執行緒執行以下程式碼, 使用join()的方法等待執行緒結束後才執行以下程式碼 97 | t.join() 98 | print("執行緒執行完畢") 99 | 100 | 輸出結果:================ 101 | 倒數計時: 10 102 | 倒數計時: 9 103 | 倒數計時: 8 104 | 倒數計時: 7 105 | 倒數計時: 6 106 | 倒數計時: 5 107 | 倒數計時: 4 108 | 倒數計時: 3 109 | 倒數計時: 2 110 | 倒數計時: 1 111 | 執行緒執行完畢 112 | ``` 113 | 114 | ### 做用引數名稱daemon=True建立長時間執行的執行緒(背景執行) 115 | - 背景執行的執行緒不能使用join()方法 116 | - 背景執行緒要等到主執行緒結束後才會使用中斷執行 117 | 118 | ```python 119 | t = Thread(target=countdown, args=(10,), daemon=True) 120 | t.start() 121 | ``` 122 | 123 | ### 手動中斷執行緒執行的執行 124 | 125 | ```python 126 | import time 127 | from threading import Thread 128 | class CountdownTask: 129 | def __init__(self): 130 | self._running = True 131 | 132 | def terminate(self): 133 | self._running = False 134 | 135 | def run(self, n): 136 | while self._running and n > 0: 137 | print('倒數計時:', n) 138 | n -= 1 139 | time.sleep(1) 140 | 141 | c = CountdownTask() 142 | t = Thread(target=c.run, args=(10,)) 143 | t.start() 144 | time.sleep(5) 145 | c.terminate() 146 | t.join() 147 | print("執行緒被手動中斷") 148 | 149 | 輸出結果:================= 150 | 倒數計時: 10 151 | 倒數計時: 9 152 | 倒數計時: 8 153 | 倒數計時: 7 154 | 倒數計時: 6 155 | 執行緒被手動中斷 156 | ``` 157 | 158 | ## GIL(global interpreter lock) 159 | 160 | - processing (進程) 161 | - threading (線程) 162 | 163 | ``` 164 | 由於pytnon有GIL的保護,python限制我們同時只能使用一個threading,所以就算我們在主程式中建立一個主程式(main processing),使用8個threading也只能使用到一個核心的CPU,所以threading不要執行太過於繁重的工作,比較適合做I/O和等待資料庫回應的動作。 165 | 166 | 如果我們有許多的工作要分給多個 CPU 核心做運算,最簡單的方式就是使用佇列(Queue)的方式,讓多個 CPU 可從佇列中取得尚未處理的工作來處理 167 | ``` 168 | 169 | ## 建立繼承Thread的自訂類別 170 | 171 | ```python 172 | from threading import Thread 173 | import time 174 | 175 | class CountdownThread(Thread): 176 | def __init__(self,n): 177 | super().__init__() 178 | self.n = n 179 | 180 | #run是overwrite 181 | def run(self): 182 | while self.n > 0: 183 | print('倒數計時:',self.n) 184 | self.n -= 1 185 | time.sleep(1) 186 | 187 | c = CountdownThread(5) 188 | c.start() 189 | c.join() 190 | 191 | 輸出結果:================== 192 | 倒數計時: 5 193 | 倒數計時: 4 194 | 倒數計時: 3 195 | 倒數計時: 2 196 | 倒數計時: 1 197 | 執行緒結束執行 198 | ``` 199 | 200 | ## 善用threading.Timer 201 | 202 | ```python 203 | from threading import Timer 204 | 205 | def countDown(n): 206 | if n > 0: 207 | print('倒數計時:', n) 208 | t = Timer(1, countDown,args=(n-1,)) 209 | t.start() 210 | countDown(10) 211 | 212 | 輸出結果:============== 213 | 倒數計時: 10 214 | 倒數計時: 9 215 | 倒數計時: 8 216 | 倒數計時: 7 217 | 倒數計時: 6 218 | 倒數計時: 5 219 | 倒數計時: 4 220 | 倒數計時: 3 221 | 倒數計時: 2 222 | 倒數計時: 1 223 | ``` -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # python 2 | 1. [python基礎與資料輸出](./python基礎與資料輸出) 3 | 4 | 2. [數值計算與資料輸入](./數值計算與資料輸入) 5 | 6 | 3. [條件分析](./條件分析) 7 | 8 | 4. [重複執行](./重複執行) 9 | 10 | 5. [字串處理](./字串處理) 11 | 12 | 6. [正規則表達式](./正規則表達式) 13 | 14 | 7. [python基本型別提示](python型別提示) 15 | 16 | 8. [函式和comprehension](./函式和comprehension) 17 | 18 | 9. [數值與函數進階運用](./數值與函數進階運用) 19 | 20 | 10. [匿名函數lambda](./匿名函數lambda) 21 | 22 | 11. [Generator,Decoretor](./generator_decorator) 23 | 24 | 11. [python內建的資料結構](./python內建的資料結構) 25 | 26 | 12. [pydantic](./pydantic) 27 | 28 | 13. [模組和套件](./模組和套件) 29 | 30 | 14. [物件和類別](./物件和類別) 31 | 32 | 15. [系統和時間](./系統和時間) 33 | 34 | 16. [檔案存取](./檔案存取/README.ipynb) 35 | 36 | 17. [excel的應用](./處理excel) 37 | 38 | 18. [SQLAlchemy ORM](./sqlalchemy_orm) 39 | 40 | 19. 整合應用程式 41 | 42 | - [整合line使用](./line) 43 | - [整合line bot](./line_bot) 44 | - [整合chat gpt](./chat_gpt) 45 | - [整合Gemini api](./gemini_api/) 46 | - [整合Gemini line_bot](./gemini_line_bot/) 47 | 48 | 20. [同時執行](./Concurrency) 49 | 50 | 21. [小程式](./小程式) 51 | 52 | 22. [python的11道練習題](https://buzzorange.com/techorange/2021/03/02/11-projects-for-python-beginner/?fbclid=IwAR0KkjjOoAsQ4jWtU1uLZaC-peitpK0ukyB-R_O9k0q2gbwM6CdiEXJpKgk) 53 | 54 | 23. 附註 55 | 56 | - [本機mini_conda](./mini_conda/) 57 | - [容器mini_conda開發](./使用Dock容器開發) 58 | - [vscode和git最基本的設定](./vscode設定/) 59 | - [markdown語法練習](https://www.markdowntutorial.com/zh-tw/) 60 | - [學習prompt](./學習prompt) -------------------------------------------------------------------------------- /TQC/PYD1010.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD110.py檔案,依下列題意進行作答,計算正n邊形面積,使輸出值符合題意要求。作答完成請另存新檔為PYA110.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者輸入兩個正數n、s,代表正n邊形之邊長為s,計算並輸出此正n邊形之面積(Area)。 7 | 8 | 提示1:建議使用import math模組的math.pow及math.tan 9 | 提示2:正n邊形面積的公式如下: 10 | A 11 | r 12 | e 13 | a 14 | = 15 | ( 16 | n 17 | ∗ 18 | s 19 | 2 20 | ) 21 | / 22 | ( 23 | 4 24 | ∗ 25 | t 26 | a 27 | n 28 | ( 29 | p 30 | i 31 | / 32 | n 33 | ) 34 | ) 35 | 36 | 提示3:輸出浮點數到小數點後第四位 37 | 38 | 3. 輸入輸出: 39 | 輸入說明 40 | 正數n、s 41 | 42 | 輸出說明 43 | 正n邊形面積 44 | 45 | 輸入輸出範例 46 | 範例輸入 47 | 8 48 | 6 49 | 範例輸出 50 | Area = 173.8234 51 | ''' 52 | 53 | import math 54 | n=eval(input()) 55 | s=eval(input()) 56 | 57 | area = (n*math.pow(s,2)) / (4*math.tan(math.pi/n)) 58 | 59 | print("Area = %.4f" % area) -------------------------------------------------------------------------------- /TQC/PYD102.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 請撰寫一程式,輸入四個分別含有小數1到4位的浮點數,然後將這四個浮點數以欄寬為7、欄與欄間隔一個空白字元、每列印兩個的方式,先列印向右靠齊,再列印向左靠齊,左右皆以直線 |(Vertical bar)作為邊界。 3 | 4 | 提示:輸出浮點數到小數點後第二位。 5 | 6 | 3. 輸入輸出: 7 | 輸入說明 8 | 四個浮點數 9 | 10 | 輸出說明 11 | 格式化輸出 12 | 13 | 輸入輸出範例 14 | 範例輸入 15 | 23.12 16 | 395.3 17 | 100.4617 18 | 564.329 19 | 20 | 範例輸出 21 | | 23.12 395.30| 22 | | 100.46 564.33| 23 | |23.12 395.30 | 24 | |100.46 564.33 | 25 | ''' 26 | # TODO 27 | num1 = eval(input()) 28 | num2 = eval(input()) 29 | num3 = eval(input()) 30 | num4 = eval(input()) 31 | # 靠右對齊 32 | # TODO 33 | print("|%7.2f %7.2f|" % (num1, num2)) 34 | print("|%7.2f %7.2f|" % (num3, num4)) 35 | # 靠左對齊 36 | # TODO 37 | print("|%-7.2f %-7.2f|" % (num1, num2)) 38 | print("|%-7.2f %-7.2f|" % (num3, num4)) -------------------------------------------------------------------------------- /TQC/PYD104.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD104.py檔案,依下列題意進行作答,計算圓形之面積和周長,使輸出值符合題意要求。作答完成請另存新檔為PYA104.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,輸入一圓的半徑,並加以計算此圓之面積和周長,最後請印出此圓的半徑(Radius)、周長(Perimeter)和面積(Area)。 7 | 8 | 提示1:需import math模組,並使用math.pi。 9 | 提示2:輸出浮點數到小數點後第二位。 10 | 11 | 3. 輸入輸出: 12 | 輸入說明 13 | 半徑 14 | 15 | 輸出說明 16 | 半徑 17 | 周長 18 | 面積 19 | 20 | 輸入輸出範例 21 | 範例輸入1 22 | 10 23 | 範例輸出1 24 | Radius = 10.00 25 | Perimeter = 62.83 26 | Area = 314.16 27 | 範例輸入2 28 | 2.5 29 | 範例輸出2 30 | Radius = 2.50 31 | Perimeter = 15.71 32 | Area = 19.63 33 | ''' 34 | 35 | import math 36 | 37 | PI = math.pi 38 | radius = float(input()) 39 | print("Radius = %.2f" % radius) 40 | print("Perimeter = %.2f" % (2 * PI * radius)) 41 | print("Area = %.2f" % (PI * pow(radius, 2))) -------------------------------------------------------------------------------- /TQC/PYD106.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD106.py檔案,依下列題意進行作答,計算選手賽跑每小時平均速度,使輸出值符合題意要求。作答完成請另存新檔為PYA106.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 假設一賽跑選手在x分y秒的時間跑完z公里,請撰寫一程式,輸入x、y、z數值,最後顯示此選手每小時的平均英哩速度(1英哩等於1.6公里)。 7 | 8 | 提示:輸出浮點數到小數點後第一位。 9 | 10 | 3. 輸入輸出: 11 | 輸入說明 12 | x(min)、y(sec)、z(km)數值 13 | 14 | 輸出說明 15 | 速度 16 | 17 | 輸入輸出範例 18 | 範例輸入 19 | 10 20 | 25 21 | 3 22 | 範例輸出 23 | Speed = 10.8 24 | ''' 25 | 26 | x = eval(input()) 27 | y = eval(input()) 28 | z = eval(input()) 29 | 30 | avg_speed = (z/1.6)/(60*x+y) * 60 * 60 31 | print("Speed = %.1f" % avg_speed) -------------------------------------------------------------------------------- /TQC/PYD108.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD108.py檔案,依下列題意進行作答,計算兩點座標及其距離,使輸出值符合題意要求。作答完成請另存新檔為PYA108.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者輸入四個數字x1、y1、x2、y2,分別代表兩個點的座標(x1, y1)、(x2, y2)。計算並輸出這兩點的座標與其歐式距離。 7 | 8 | 提示1:歐式距離 9 | = 10 | √ 11 | ( 12 | ( 13 | x 14 | 1 15 | − 16 | x 17 | 2 18 | ) 19 | 2 20 | + 21 | ( 22 | y 23 | 1 24 | − 25 | y 26 | 2 27 | ) 28 | 2 29 | ) 30 | 31 | 提示2:兩座標的歐式距離,輸出到小數點後第4位 32 | 33 | 3. 輸入輸出: 34 | 輸入說明 35 | 四個數字x1、y1、x2、y2 36 | 37 | 輸出說明 38 | 座標1 39 | 座標2 40 | 兩座標的歐式距離 41 | 42 | 輸入輸出範例 43 | 範例輸入 44 | 2 45 | 1 46 | 5.5 47 | 8 48 | 範例輸出 49 | ( 2 , 1 ) 50 | ( 5.5 , 8 ) 51 | Distance = 7.8262 52 | ''' 53 | x1 = eval(input()) 54 | y1 = eval(input()) 55 | x2 = eval(input()) 56 | y2 = eval(input()) 57 | 58 | dist = ((x2- x1) ** 2 + (y2-y1) ** 2) ** (0.5) 59 | 60 | print("( " , x1 , " , " , y1 , " )") 61 | print("( " , x2 , " , " , y2 , " )") 62 | print("Distance = %.4f" % dist) 63 | 64 | 65 | -------------------------------------------------------------------------------- /TQC/PYD202.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD202.py檔案,依下列題意進行作答,判斷輸入值是否為3或5的倍數,使輸出值符合題意要求。作答完成請另存新檔為PYA202.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請使用選擇敘述撰寫一程式,讓使用者輸入一個正整數,然後判斷它是3或5的倍數,顯示【x is a multiple of 3.】或【x is a multiple of 5.】;若此數值同時為3與5的倍數,顯示【x is a multiple of 3 and 5.】;如此數值皆不屬於3或5的倍數,顯示【x is not a multiple of 3 or 5.】,將使用者輸入的數值代入x。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 一個正整數 11 | 12 | 輸出說明 13 | 判斷是否為3或者是5的倍數 14 | 15 | 輸入輸出範例 16 | 範例輸入1 17 | 55 18 | 範例輸出1 19 | 55 is a multiple of 5. 20 | 範例輸入2 21 | 36 22 | 範例輸出2 23 | 36 is a multiple of 3. 24 | 範例輸入3 25 | 92 26 | 範例輸出3 27 | 92 is not a multiple of 3 or 5. 28 | 範例輸入4 29 | 15 30 | 範例輸出4 31 | 15 is a multiple of 3 and 5. 32 | ''' 33 | 34 | a = int(input()) 35 | if (a%3 == 0) and (a%5 == 0): 36 | print("%d is a multiple of 3 and 5." % a) 37 | elif a%3 == 0: 38 | print("%d is a multiple of 3." % a) 39 | elif a%5 == 0: 40 | print("%d is a multiple of 5." % a) 41 | else: 42 | print("%d is not a multiple of 3 or 5." % a) -------------------------------------------------------------------------------- /TQC/PYD204.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD204.py檔案,依下列題意進行作答,依輸入值進行算術運算,使輸出值符合題意要求。作答完成請另存新檔為PYA204.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請使用選擇敘述撰寫一程式,讓使用者輸入兩個整數a、b,然後再輸入一算術運算子 (+、-、*、/、//、%) ,輸出經過運算後的結果。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 兩個整數a、b,及一個算術運算子 (+、-、*、/、//、%) 11 | 12 | 輸出說明 13 | 運算結果 (無須做格式化) 14 | 15 | 輸入輸出範例 16 | 範例輸入 17 | 30 18 | 20 19 | * 20 | 範例輸出1 21 | 600 22 | ''' 23 | 24 | a = int(input()) 25 | b = int(input()) 26 | opr = input() 27 | ans = 0 28 | if opr == '+': 29 | ans = a + b 30 | elif opr == '-': 31 | ans = a - b 32 | elif opr == '*': 33 | ans = a * b 34 | elif opr == '/': 35 | ans = a / b 36 | elif opr == '//': 37 | ans = a // b 38 | elif opr == '%': 39 | ans = a % b 40 | 41 | print(ans) 42 | 43 | -------------------------------------------------------------------------------- /TQC/PYD206.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD206.py檔案,依下列題意進行作答,判斷輸入值所對應的等級,使輸出值符合題意要求。作答完成請另存新檔為PYA206.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請使用選擇敘述撰寫一程式,根據使用者輸入的分數顯示對應的等級。標準如下表所示: 7 | 8 | 分 數 等級 9 | 80 ~ 100 A 10 | 70 ~ 79 B 11 | 60 ~ 69 C 12 | <= 59 F 13 | 3. 輸入輸出: 14 | 輸入說明 15 | 一個整數 16 | 17 | 輸出說明 18 | 判斷輸入值所對應的等級 19 | 20 | 輸入輸出範例 21 | 範例輸入 22 | 79 23 | 範例輸出 24 | B 25 | ''' 26 | 27 | score = int(input()) 28 | if 80 <= score <= 100: 29 | grade = 'A' 30 | elif 70 <= score <=79: 31 | grade = 'B' 32 | elif 60 <= score <= 69: 33 | grade = 'C' 34 | elif score <= 59: 35 | grade = 'F' 36 | 37 | print(grade) -------------------------------------------------------------------------------- /TQC/PYD208.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD208.py檔案,依下列題意進行作答,依輸入值進行進位轉換,使輸出值符合題意要求。作答完成請另存新檔為PYA208.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請使用選擇敘述撰寫一程式,讓使用者輸入一個十進位整數num(0 ≤ num ≤ 15),將num轉換成十六進位值。 7 | 8 | 提示:轉換規則 = 十進位0~9的十六進位值為其本身,十進位10~15的十六進位值為A~F。 9 | 10 | 3. 輸入輸出: 11 | 輸入說明 12 | 一個數值 13 | 14 | 輸出說明 15 | 將此數值轉換成十六進位值 16 | 17 | 輸入輸出範例 18 | 範例輸入1 19 | 13 20 | 範例輸出1 21 | D 22 | 範例輸入2 23 | 8 24 | 範例輸出2 25 | 8 26 | ''' 27 | 28 | num = int(input()) 29 | 30 | if 0<= num <=9: 31 | hex_num = num 32 | elif num == 10: 33 | hex_num = 'A' 34 | elif num == 11: 35 | hex_num = 'B' 36 | elif num == 12: 37 | hex_num = 'C' 38 | elif num == 13: 39 | hex_num = 'D' 40 | elif num == 14: 41 | hex_num = 'E' 42 | elif num == 15: 43 | hex_num = 'F' 44 | 45 | print(hex_num) -------------------------------------------------------------------------------- /TQC/PYD210.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD210.py檔案,依下列題意進行作答,檢查輸入值是否可組成三角形,使輸出值符合題意要求。作答完成請另存新檔為PYA210.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請使用選擇敘述撰寫一程式,讓使用者輸入三個邊長,檢查這三個邊長是否可以組成一個三角形。若可以,則輸出該三角形之周長;否則顯示【Invalid】。 7 | 8 | 提示:檢查方法 = 任意兩個邊長之總和大於第三邊長。 9 | 10 | 3. 輸入輸出: 11 | 輸入說明 12 | 三個正整數 13 | 14 | 輸出說明 15 | 可以組成三角形則輸出周長;否則顯示Invalid 16 | 17 | 輸入輸出範例 18 | 範例輸入1 19 | 5 20 | 6 21 | 13 22 | 範例輸出1 23 | Invalid 24 | 範例輸入2 25 | 1 26 | 1 27 | 1 28 | 範例輸出2 29 | 3 30 | ''' 31 | 32 | side1 = int(input()) 33 | side2 = int(input()) 34 | side3 = int(input()) 35 | 36 | if side1+side2 > side3 and side2+side3 > side1 and side1 + side3 > side2: 37 | print(side1 + side2 + side3) 38 | else: 39 | print('Invalid') -------------------------------------------------------------------------------- /TQC/PYD302.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD302.py檔案,依下列題意進行作答,依輸入值計算偶數的總和,使輸出值符合題意要求。作答完成請另存新檔為PYA302.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請使用迴圈敘述撰寫一程式,讓使用者輸入兩個正整數a、b(a < b),利用迴圈計算從a開始的偶數連加到b的總和。例如:輸入a=1、b=100,則輸出結果為2550(2 + 4 + … + 100 = 2550)。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 兩個正整數(a、b,且a < b) 11 | 12 | 輸出說明 13 | 計算從a開始的偶數連加到b的總和 14 | 15 | 輸入輸出範例 16 | 範例輸入 17 | 14 18 | 1144 19 | 範例輸出 20 | 327714 21 | ''' 22 | 23 | a = int(input()) 24 | b = int(input()) 25 | ans = 0 26 | 27 | for i in range(a, b+1): 28 | if i % 2 == 0: 29 | ans += i 30 | 31 | print(ans) -------------------------------------------------------------------------------- /TQC/PYD304.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD304.py檔案,依下列題意進行作答,依輸入值計算所有5之倍數總和,使輸出值符合題意要求。作答完成請另存新檔為PYA304.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請使用迴圈敘述撰寫一程式,讓使用者輸入一個正整數a,利用迴圈計算從1到a之間,所有5之倍數數字總和。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 一個正整數 11 | 12 | 輸出說明 13 | 所有5之倍數數字總和 14 | 15 | 輸入輸出範例 16 | 範例輸入 17 | 21 18 | 範例輸出 19 | 50 20 | ''' 21 | 22 | num = int(input()) 23 | ans = 0 24 | 25 | for i in range(1, num+1): 26 | if i % 5 == 0: 27 | ans += i 28 | 29 | print(ans) -------------------------------------------------------------------------------- /TQC/PYD306.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD306.py檔案,依下列題意進行作答,依輸入值計算n!的值,使輸出值符合題意要求。作答完成請另存新檔為PYA306.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請使用迴圈敘述撰寫一程式,讓使用者輸入一個正整數n,利用迴圈計算並輸出n!的值。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 一個正整數 11 | 12 | 輸出說明 13 | 計算n!的值 14 | 15 | 輸入輸出範例 16 | 範例輸入 17 | 15 18 | 範例輸出 19 | 1307674368000 20 | ''' 21 | 22 | n = int(input()) 23 | result = 1 24 | for i in range(1, n+1): 25 | result *= i 26 | print(result) -------------------------------------------------------------------------------- /TQC/PYD308.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD308.py檔案,依下列題意進行作答,將輸入值之每位數全部加總,使輸出值符合題意要求。作答完成請另存新檔為PYA308.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請使用迴圈敘述撰寫一程式,要求使用者輸入一個數字,此數字代表後面測試資料的數量。每一筆測試資料是一個正整數(由使用者輸入),將此正整數的每位數全部加總起來。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 先輸入一個正整數代表後面測試資料的數量 11 | 依測試資料的數量,再輸入正整數的測試資料 12 | 13 | 輸出說明 14 | 將測試資料的每位數全部加總 15 | 16 | 輸入輸出範例 17 | 輸入與輸出會交雜如下,輸出的部份以粗體字表示 1 18 | 1 19 | 98765 20 | Sum of all digits of 98765 is 35 21 | 22 | 輸入與輸出會交雜如下,輸出的部份以粗體字表示 2 23 | 3 24 | 32412 25 | Sum of all digits of 32412 is 12 26 | 0 27 | Sum of all digits of 0 is 0 28 | 769 29 | Sum of all digits of 769 is 22 30 | ''' 31 | 32 | total = int(input()) 33 | 34 | for i in range(total): 35 | num = int(input()) 36 | tmp = num 37 | sum_digit = 0 38 | while tmp != 0: 39 | sum_digit += tmp % 10 40 | tmp //= 10 41 | print("sum of all digits of %d is %d" % (num, sum_digit))t -------------------------------------------------------------------------------- /TQC/PYD310.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD310.py檔案,依下列題意進行作答,依公式計算總和,使輸出值符合題意要求。作答完成請另存新檔為PYA310.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請使用迴圈敘述撰寫一程式,讓使用者輸入正整數n (1 < n),計算以下公式的總和並顯示結果: 7 | 1 8 | 1 9 | + 10 | √ 11 | 2 12 | + 13 | 1 14 | √ 15 | 2 16 | + 17 | √ 18 | 3 19 | + 20 | 1 21 | √ 22 | 3 23 | + 24 | √ 25 | 4 26 | + 27 | . 28 | . 29 | . 30 | + 31 | 1 32 | √ 33 | n 34 | − 35 | 1 36 | + 37 | √ 38 | n 39 | 40 | 提示:輸出結果至小數點後四位。 41 | 42 | 3. 輸入輸出: 43 | 輸入說明 44 | 一個正整數 45 | 46 | 輸出說明 47 | 代入公式計算結果 48 | 49 | 輸入輸出範例 50 | 範例輸入 51 | 8 52 | 範例輸出 53 | 1.8284 54 | ''' 55 | 56 | n = eval(input()) 57 | sum_series = 0 58 | for i in range(2, n+1): 59 | sum_series += 1 / ((i-1) ** 0.5 + i**0.5) 60 | print("%.4f" % sum_series) -------------------------------------------------------------------------------- /TQC/PYD402.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD402.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA402.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者輸入數字,輸入的動作直到輸入值為9999才結束,然後找出其最小值,並輸出最小值。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | n個數值,直至9999結束輸入 11 | 12 | 輸出說明 13 | n個數值中的最小值 14 | 15 | 輸入輸出範例 16 | 範例輸入 17 | 29 18 | 100 19 | 948 20 | 377 21 | -28 22 | 0 23 | -388 24 | 9999 25 | 範例輸出 26 | -388 27 | ''' 28 | 29 | num = eval(input()) 30 | min_num = num 31 | 32 | while num != 9999: 33 | num = eval(input()) 34 | if num < min_num: 35 | min_num = num 36 | 37 | print(min_num) -------------------------------------------------------------------------------- /TQC/PYD404.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD404.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA404.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者輸入一個正整數,將此正整數以反轉的順序輸出,並判斷如輸入0,則輸出為0。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 一個正整數或0 11 | 12 | 輸出說明 13 | 正整數反轉輸出。如輸入數值為0,輸出為0 14 | 15 | 輸入輸出範例 16 | 範例輸入1 17 | 31283 18 | 範例輸出1 19 | 38213 20 | 範例輸入2 21 | 0 22 | 範例輸出2 23 | 0 24 | 範例輸入3 25 | 135790 26 | 範例輸出3 27 | 097531 28 | ''' 29 | 30 | number = eval(input()) 31 | if number == 0: 32 | print(number) 33 | else: 34 | while number != 0: 35 | print(number % 10, end='') 36 | number //= 10 37 | -------------------------------------------------------------------------------- /TQC/PYD406.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD406.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA406.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,以不定數迴圈的方式輸入身高與體重,計算出BMI之後再根據以下對照表,印出BMI及相對應的BMI代表意義(State)。假t表所示: 7 | 8 | BMI值 代表意義 9 | BMI < 18.5 under weight 10 | 18.5 <= BMI < 25 normal 11 | 25.0 <= BMI < 30 over weight 12 | 30 <= BMI fat 13 | 提示: 14 | B 15 | M 16 | I 17 | = 18 | 體 19 | 重 20 | ( 21 | k 22 | g 23 | ) 24 | / 25 | 身 26 | 高 27 | 2 28 | ( 29 | m 30 | ) 31 | ,輸出浮點數到小數點後第二位。 不需考慮男性或女性標準。 32 | 33 | 3. 輸入輸出: 34 | 輸入說明 35 | 兩個正數(身高cm、體重kg),直至-9999結束輸入 36 | 37 | 輸出說明 38 | 輸出BMI值 39 | BMI值代表意義 40 | 41 | 輸入輸出範例 42 | 輸入與輸出會交雜如下,輸出的部份以粗體字表示 43 | 176 44 | 80 45 | BMI: 25.83 46 | State: over weight 47 | 170 48 | 100 49 | BMI: 34.60 50 | State: fat 51 | -9999 52 | 53 | ''' 54 | state = "" 55 | height = eval(input()) 56 | while height != -9999: 57 | weight = eval(input()) 58 | bmi = weight / (height / 100 * height /100) 59 | if weight == -9999: 60 | break 61 | elif bmi >= 30: 62 | state = "fat" 63 | elif bmi >= 25 and bmi < 29.9: 64 | state = "over weight" 65 | elif bmi >= 18.5 and bmi <= 24.9: 66 | state = "normal" 67 | elif bmi < 18.5: 68 | state = "under weight" 69 | print("BMI:%.2f" % bmi) 70 | print("State:%s" % state) 71 | 72 | height = eval(input()) -------------------------------------------------------------------------------- /TQC/PYD408.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD408.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA408.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者輸入十個整數,計算並輸出偶數和奇數的個數。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 十個整數 11 | 12 | 輸出說明 13 | 偶數的個數 14 | 奇數的個數 15 | 16 | 輸入輸出範例 17 | 範例輸入 18 | 69 19 | 48 20 | 19 21 | 91 22 | 83 23 | 22 24 | 18 25 | 37 26 | 82 27 | 40 28 | 範例輸出 29 | Even numbers: 5 30 | Odd numbers: 5 31 | ''' 32 | 33 | even = odd = 0 34 | 35 | for i in range(10): 36 | a = int(input()) 37 | if a % 2 == 0: 38 | even += 1 39 | else: 40 | odd += 1 41 | 42 | print("Even numbers:", even) 43 | print("Odd numbers", odd) -------------------------------------------------------------------------------- /TQC/PYD410.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD410.py檔案,依下列題意進行作答,使輸出值符合題意要求。作答完成請另存新檔為PYA410.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,依照使用者輸入的n,畫出對應的等腰三角形。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 一個正整數 11 | 12 | 輸出說明 13 | 以 * 畫出等腰三角形 14 | (每列最後一個 * 的右方無空白) 15 | 16 | 輸入輸出範例 17 | 範例輸入 18 | 7 19 | 範例輸出 20 | * 21 | *** 22 | ***** 23 | ******* 24 | ********* 25 | *********** 26 | ************* 27 | ''' 28 | 29 | n = eval(input()) 30 | for i in range(0, n): 31 | for j in range(n-i, 1, -1): 32 | print(' ', end='') 33 | 34 | for k in range(0, i * 2 + 1, 1): 35 | print('*', end='') 36 | 37 | print() 38 | 39 | -------------------------------------------------------------------------------- /TQC/PYD502.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD502.py檔案,依下列題意進行作答,依使用者輸入的數字作為參數傳遞並計算乘積,使輸出值符合題意要求。作答完成請另存新檔為PYA502.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,將使用者輸入的兩個整數作為參數傳遞給一個名為compute(x, y)的函式,此函式將回傳x和y的乘積。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 兩個整數 11 | 12 | 輸出說明 13 | 兩個整數相乘之乘積 14 | 15 | 輸入輸出範例 16 | 範例輸入 17 | 56 18 | 11 19 | 範例輸出 20 | 616 21 | ''' 22 | def compute(a, b): 23 | return a * b 24 | 25 | num1 = eval(input()) 26 | num2 = eval(input()) 27 | 28 | print(compute(num1, num2)) -------------------------------------------------------------------------------- /TQC/PYD504.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD504.py檔案,依下列題意進行作答,依使用者輸入的整數作為參數傳遞進行公式計算,使輸出值符合題意要求。作答完成請另存新檔為PYA504.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者輸入兩個整數,接著呼叫函式compute(),此函式接收兩個參數a、b,並回傳 7 | a 8 | b 9 | 的值。 10 | 11 | 3. 輸入輸出: 12 | 輸入說明 13 | 兩個整數 14 | 15 | 輸出說明 16 | a 17 | b 18 | 的值 19 | 20 | 輸入輸出範例 21 | 範例輸入 22 | 14 23 | 3 24 | 範例輸出 25 | 2744 26 | ''' 27 | 28 | def compute(a, b): 29 | return a ** b 30 | 31 | a = eval(input()) 32 | b = eval(input()) 33 | 34 | print(compute(a, b)) -------------------------------------------------------------------------------- /TQC/PYD506.py: -------------------------------------------------------------------------------- 1 | '''1. 題目說明: 2 | 請開啟PYD506.py檔案,依下列題意進行作答,依使用者輸入的數字作為參數傳遞進行公式計算,使輸出值符合題意要求。作答完成請另存新檔為PYA506.py再進行評分。 3 | 4 | 2. 設計說明: 5 | 請撰寫一程式,將使用者輸入的三個整數(代表一元二次方程式 6 | a 7 | x 8 | 2 9 | + 10 | b 11 | x 12 | + 13 | c 14 | = 15 | 0 16 | 的三個係數a、b、c)作為參數傳遞給一個名為compute()的函式,該函式回傳方程式的解,如無解則輸出【Your equation has no root.】 17 | 18 | 提示:輸出有順序性 19 | 20 | 3. 輸入輸出: 21 | 輸入說明 22 | 三個整數,分別為a、b、c 23 | 24 | 輸出說明 25 | 代入一元二次方程式,回傳方程式解;如無解則輸出【Your equation has no root.】 26 | 27 | 輸入輸出範例 28 | 範例輸入1 29 | 2 30 | -3 31 | 1 32 | 範例輸出1 33 | 1.0, 0.5 34 | 範例輸入2 35 | 9 36 | 9 37 | 8 38 | 範例輸出2 39 | Your equation has no root. 40 | 41 | ''' 42 | 43 | def compute(a, b, c): 44 | delta = b**2 - 4 * a * c 45 | if delta < 0: 46 | return None 47 | elif delta == 0: 48 | return -b / (2 * a) 49 | else: 50 | res1 = (-b + delta**0.5) / (2 * a) 51 | res2 = (-b - delta**0.5) / (2 * a) 52 | return str(res1) + ", " + str(res2) 53 | 54 | a = eval(input()) 55 | b = eval(input()) 56 | c = eval(input()) 57 | 58 | result = compute(a, b, c) 59 | if result == None: 60 | print("Your equation has no root.") 61 | else: 62 | print(result) -------------------------------------------------------------------------------- /TQC/PYD508.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD05.py檔案,依下列題意進行作答,計算兩個正整數的最大公因數,使輸出值符合題意要求。作答完成請另存新檔為PYA508.py再進行評分。。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者輸入兩個正整數x、y,並將x與y傳遞給名為compute()的函式,此函式回傳x和y的最大公因數。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 兩個正整數(以半形逗號分隔) 11 | 12 | x,y 13 | 14 | 輸出說明 15 | 最大公因數 16 | 17 | 輸入輸出範例 18 | 範例輸入1 19 | 12,8 20 | 範例輸出1 21 | 4 22 | 範例輸入2 23 | 4,6 24 | 範例輸出2 25 | 2 26 | ''' 27 | 28 | def compute(a, b): 29 | gcd = 1 30 | k = 1 31 | 32 | if a > 0 and b > 0: 33 | while k <= a and k <=b: 34 | if a % k == 0 and b % k == 0: 35 | gcd = k 36 | k += 1 37 | return gcd 38 | 39 | x, y = eval(input()) 40 | gcd = compute(x,y) 41 | print(gcd) -------------------------------------------------------------------------------- /TQC/PYD510.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD05.py檔案,依下列題意進行作答,計算費氏數列,並依輸入的正整數回傳費氏數列前n個數值,使輸出值符合題意要求。作答完成請另存新檔為PYA510.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,計算費氏數列(Fibonacci numbers),使用者輸入一正整數num (num>=2),並將它傳遞給名為compute()的函式,此函式將輸出費氏數列前num個的數值。 7 | 8 | 提示:費氏數列的某一項數字是其前兩項的和,而且第0項為0,第一項為1,表示方式如下: 9 | F 10 | 0 11 | = 12 | 0 13 | 14 | F 15 | 1 16 | = 17 | 1 18 | 19 | F 20 | n 21 | = 22 | F 23 | n 24 | − 25 | 1 26 | + 27 | F 28 | n 29 | − 30 | 2 31 | 32 | 3. 輸入輸出: 33 | 輸入說明 34 | 一個正整數num (num>=2) 35 | 36 | 輸出說明 37 | 依輸入值num,輸出費氏數列前num個的數值(每個數值後方為一個半形空格) 38 | 39 | 輸入輸出範例 40 | 範例輸入1 41 | 10 42 | 範例輸出1 43 | 0 1 1 2 3 5 8 13 21 34 44 | 範例輸入2 45 | 20 46 | 範例輸出2 47 | 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 48 | ''' 49 | 50 | def compute(n): 51 | n1 = 0 52 | n2 = 1 53 | print("%d %d" % (n1, n2), end=' ') 54 | for _ in range(3, n+1): 55 | n3 = n1 + n2 56 | print('%d' % (n3), end=' ') 57 | n1 = n2 58 | n2 = n3 59 | 60 | num = eval(input()) 61 | compute(num) -------------------------------------------------------------------------------- /TQC/PYD602.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD602.py檔案,依下列題意進行作答,輸出並計算五張牌總和,使輸出值符合題意要求。作答完成請另存新檔為PYA602.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者輸入52張牌中的5張,計算並輸出其總和。 7 | 8 | 提示:J、Q、K以及A分別代表11、12、13以及1。 9 | 10 | 3. 輸入輸出: 11 | 輸入說明 12 | 5張牌數 13 | 14 | 輸出說明 15 | 5張牌的數值總和 16 | 17 | 輸入輸出範例 18 | 範例輸入 19 | 5 20 | 10 21 | K 22 | 3 23 | A 24 | 範例輸出 25 | 32 26 | ''' 27 | cards = [] 28 | result = 0 29 | for i in range(5): 30 | cards.append(input()) 31 | 32 | for i in range(5): 33 | if cards[i] == 'A': result += 1 34 | elif cards[i] == "J": result += 11 35 | elif cards[i] == "Q": result += 12 36 | elif cards[i] == "K": result += 13 37 | elif cards[i] == "10": result += 10 38 | else: 39 | result += eval(cards[i]) 40 | print(result) -------------------------------------------------------------------------------- /TQC/PYD604.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD604.py檔案,依下列題意進行作答,計算眾數及其出現的次數,使輸出值符合題意要求。作答完成請另存新檔為PYA604.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者輸入十個整數作為樣本數,輸出眾數(樣本中出現最多次的數字)及其出現的次數。 7 | 8 | 提示:假設樣本中只有一個眾數。 9 | 10 | 3. 輸入輸出: 11 | 輸入說明 12 | 十個整數 13 | 14 | 輸出說明 15 | 眾數 16 | 眾數出現的次數 17 | 18 | 輸入輸出範例 19 | 範例輸入 20 | 34 21 | 18 22 | 22 23 | 32 24 | 18 25 | 29 26 | 30 27 | 38 28 | 42 29 | 18 30 | 範例輸出 31 | 18 32 | 3 33 | ''' 34 | size = 10 35 | sample = [] 36 | count = [0] * size 37 | 38 | for i in range(size): 39 | num = int(input()) 40 | sample.append(num) 41 | count[sample.index(num)] += 1 42 | 43 | num_occu = max(count) 44 | print(sample[count.index(num_occu)]) 45 | print(num_occu) -------------------------------------------------------------------------------- /TQC/PYD606.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD606.py檔案,依下列題意進行作答,印出串列的值,使輸出值符合題意要求。作答完成請另存新檔為PYA606.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者輸入兩個正整數rows、cols,分別表示二維串列lst 的「第一個維度大小」與「第二個維度大小」。 7 | 串列元素[row][col]所儲存的數字,其規則為:row、col 的交點值 = 第二個維度的索引col – 第一個維度的索引row。 8 | 接著以該串列作為參數呼叫函式compute()輸出串列。 9 | 10 | 提示:欄寬為4。 11 | 12 | 3. 輸入輸出: 13 | 輸入說明 14 | 兩個正整數(rows、cols) 15 | 16 | 輸出說明 17 | 格式化輸出row、col的交點值 18 | 19 | 輸入輸出範例 20 | 範例輸入 21 | 5 22 | 10 23 | 範例輸出 24 | 0 1 2 3 4 5 6 7 8 9 25 | -1 0 1 2 3 4 5 6 7 8 26 | -2 -1 0 1 2 3 4 5 6 7 27 | -3 -2 -1 0 1 2 3 4 5 6 28 | -4 -3 -2 -1 0 1 2 3 4 5 29 | ''' 30 | 31 | def compute(lst): 32 | for i in range(len(lst)): 33 | for j in range(len(lst[i])): 34 | print('%4d' % lst[i][j], end='') 35 | print() 36 | 37 | row = eval(input()) 38 | column = eval(input()) 39 | lst = [] 40 | 41 | for i in range(row): 42 | lst.append([]) 43 | for j in range(column): 44 | lst[i].append(j-i) 45 | 46 | compute(lst) -------------------------------------------------------------------------------- /TQC/PYD608.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD608.py檔案,依下列題意進行作答,建立3*3矩陣並輸出矩陣最大值與最小值的索引,使輸出值符合題意要求。作答完成請另存新檔為PYA608.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者建立一個3*3的矩陣,其內容為從鍵盤輸入的整數(不重複),接著輸出矩陣最大值與最小值的索引。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 九個整數 11 | 12 | 輸出說明 13 | 矩陣最大值及其索引 14 | 矩陣最小值及其索引 15 | 16 | 輸入輸出範例 17 | 範例輸入 18 | 6 19 | 4 20 | 8 21 | 39 22 | 12 23 | 3 24 | -3 25 | 49 26 | 33 27 | 範例輸出 28 | Index of the largest number 49 is: (2, 1) 29 | Index of the smallest number -3 is: (2, 0) 30 | ''' 31 | 32 | size = 3 33 | mat = [] 34 | for i in range(size): 35 | mat.append([]) 36 | for j in range(size): 37 | mat[i].append(eval(input())) 38 | 39 | max_num = min_num = mat[0][0] 40 | max_index = min_index = [0, 0] 41 | 42 | for i in range(size): 43 | for j in range(size): 44 | if mat[i][j] > max_num: 45 | max_num = mat[i][j] 46 | max_index = [i, j] 47 | elif mat[i][j] < min_num: 48 | min_num = mat[i][j] 49 | min_index = [i, j] 50 | 51 | print("Index of the largest number %d is:(%d, %d)" % (max_num, max_index[0],max_index[1])) 52 | 53 | print("Index of the smallest number %d is:(%d, %d)" % (min_num, min_index[0],min_index[1])) -------------------------------------------------------------------------------- /TQC/PYD610.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD610.py檔案,依下列題意進行作答,依輸入值計算四週的平均溫度及最高、最低溫度,使輸出值符合題意要求。作答完成請另存新檔為PYA610.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者輸入四週各三天的溫度,接著計算並輸出這四週的平均溫度及最高、最低溫度。 7 | 8 | 提示1:平均溫度輸出到小數點後第二位。 9 | 提示2:最高溫度及最低溫度的輸出,如為31時,則輸出31,如為31.1時,則輸出31.1。 10 | 11 | 3. 輸入輸出: 12 | 輸入說明 13 | 四週各三天的溫度 14 | 15 | 輸出說明 16 | 平均溫度 17 | 最高溫度 18 | 最低溫度 19 | 20 | 輸入輸出範例 21 | 輸入與輸出會交雜如下,輸出的部份以粗體字表示 22 | 下圖中的 粉紅色點 為 空格 23 | 24 | ''' 25 | 26 | num_week = 4 27 | num_day = 3 28 | temp = [] 29 | 30 | for i in range(num_week): 31 | temp.append([]) 32 | print("Week %d:" % (i+1)) 33 | for j in range(num_day): 34 | temp[i].append(eval(input("Day %d:" % (j+1)))) 35 | 36 | comb = [] 37 | for i in range(num_week): 38 | comb.extend(temp[i]) 39 | 40 | avg = sum(comb) / (num_week * num_day) 41 | print("Average:%.2f" % avg) 42 | print("Highest:", max(comb)) 43 | print("Lowest:", min(comb)) -------------------------------------------------------------------------------- /TQC/PYD702.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD702.py檔案,依下列題意進行作答,將兩數組合併並進行排序,使輸出值符合題意要求。作答完成請另存新檔為PYA702.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,輸入並建立兩組數組,各以-9999為結束點(數組中不包含-9999)。將此兩數組合併並從小到大排序之,顯示排序前的數組和排序後的串列。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 兩個數組,直至-9999結束輸入 11 | 12 | 輸出說明 13 | 排序前的數組 14 | 排序後的串列 15 | 16 | 輸入輸出範例 17 | 輸入與輸出會交雜如下,輸出的部份以粗體字表示 18 | Create tuple1: 19 | 9 20 | 0 21 | -1 22 | 3 23 | 8 24 | -9999 25 | Create tuple2: 26 | 28 27 | 16 28 | 39 29 | 56 30 | 78 31 | 88 32 | -9999 33 | Combined tuple before sorting: (9, 0, -1, 3, 8, 28, 16, 39, 56, 78, 88) 34 | Combined list after sorting: [-1, 0, 3, 8, 9, 16, 28, 39, 56, 78, 88] 35 | ''' 36 | tup1 = () 37 | tup2 = () 38 | print("Create tuple1:") 39 | while True: 40 | num = eval(input()) 41 | if num == -9999: 42 | break 43 | tup1 += (num,) 44 | 45 | print("Create tuple2:") 46 | while True: 47 | num = eval(input()) 48 | if num == -9999: 49 | break 50 | tup2 += (num,) 51 | 52 | tup_comb = tup1 + tup2 53 | print("Combined tuple before sorting:", tup_comb) 54 | 55 | lst_comb = list(tup_comb) 56 | print("Combined list after sorting:", sorted(lst_comb)) -------------------------------------------------------------------------------- /TQC/PYD704.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD704.py檔案,依下列題意進行作答,將整數儲存至集合(set)中並進行條件判斷,使輸出值符合題意要求。作答完成請另存新檔為PYA704.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,輸入數個整數並儲存至集合,以輸入-9999為結束點(集合中不包含-9999),最後顯示該集合的長度(Length)、最大值(Max)、最小值(Min)、總和(Sum)。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 輸入n個整數至集合,直至-9999結束輸入 11 | 12 | 輸出說明 13 | 集合的長度 14 | 集合中的最大值 15 | 集合中的最小值 16 | 集合內的整數總和 17 | 18 | 輸入輸出範例 19 | 範例輸入 20 | 34 21 | -23 22 | 29 23 | 7 24 | 0 25 | -1 26 | -9999 27 | 範例輸出 28 | Length: 6 29 | Max: 34 30 | Min: -23 31 | Sum: 46 32 | ''' 33 | 34 | num = set() 35 | while True: 36 | inp = eval(input()) 37 | if inp == -9999: 38 | break 39 | num.add(inp) 40 | 41 | print("Length:", len(num)) 42 | print("Max:", max(num)) 43 | print("Min:",min(num)) 44 | print("Sum:", sum(num)) -------------------------------------------------------------------------------- /TQC/PYD706.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD706.py檔案,依下列題意進行作答,進行全字母句之判斷,使輸出值符合題意要求。作答完成請另存新檔為PYA706.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 全字母句(Pangram)是英文字母表所有的字母都出現至少一次(最好只出現一次)的句子。請撰寫一程式,要求使用者輸入一正整數k(代表有k筆測試資料),每一筆測試資料為一句子,程式判斷該句子是否為Pangram,並印出對應結果True(若是)或False(若不是)。 7 | 8 | 提示:不區分大小寫字母 9 | 10 | 3. 輸入輸出: 11 | 輸入說明 12 | 先輸入一個正整數表示測試資料筆數,再輸入測試資料 13 | 14 | 輸出說明 15 | 輸入的資料是否為全字母句 16 | 17 | 輸入輸出範例 18 | 輸入與輸出會交雜如下,輸出的部份以粗體字表示 第1組 19 | 3 20 | The quick brown fox jumps over the lazy dog 21 | True 22 | Learning Python is funny 23 | False 24 | Pack my box with five dozen liquor jugs 25 | True 26 | 27 | 輸入與輸出會交雜如下,輸出的部份以粗體字表示 第2組 28 | 2 29 | Quick fox jumps nightly above wizard 30 | True 31 | These can be weapons of terror 32 | False 33 | ''' 34 | 35 | num_alph = 26 36 | k = eval(input()) 37 | 38 | for i in range(k): 39 | sentence = input() 40 | alphabet = set(sentence.lower()) 41 | alphabet.remove('1') 42 | 43 | print(len(alphabet) == num_alph) -------------------------------------------------------------------------------- /TQC/PYD708.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD708.py檔案,依下列題意進行作答,進行兩詞典合併,使輸出值符合題意要求。作答完成請另存新檔為PYA708.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,自行輸入兩個詞典(以輸入鍵值"end"作為輸入結束點,詞典中將不包含鍵值"end"),將此兩詞典合併,並根據key值字母由小到大排序輸出,如有重複key值,後輸入的key值將覆蓋前一key值。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 輸入兩個詞典,直至end結束輸入 11 | 12 | 輸出說明 13 | 合併兩詞典,並根據key值字母由小到大排序輸出,如有重複key值,後輸入的key值將覆蓋前一key值 14 | 15 | 輸入輸出範例 16 | 輸入與輸出會交雜如下,輸出的部份以粗體字表示 17 | Create dict1: 18 | Key: a 19 | Value: apple 20 | Key: b 21 | Value: banana 22 | Key: d 23 | Value: durian 24 | Key: end 25 | Create dict2: 26 | Key: c 27 | Value: cat 28 | Key: e 29 | Value: elephant 30 | Key: end 31 | a: apple 32 | b: banana 33 | c: cat 34 | d: durian 35 | e: elephant 36 | ''' 37 | def compute(): 38 | dic = {} 39 | while True: 40 | key = input("Key:") 41 | if key == "end": 42 | return dic 43 | value = input("Value: ") 44 | dic[key] = value 45 | 46 | 47 | print("Create dict1") 48 | dict1 = compute() 49 | 50 | print("Create dict2") 51 | dict2 = compute() 52 | 53 | merge_dict = dict1.copy() 54 | merge_dict.update(dict2) 55 | 56 | sortedDict = sorted(merge_dict) 57 | 58 | for i in sortedDict: 59 | print("%s: %s" % (i, merge_dict[i])) 60 | -------------------------------------------------------------------------------- /TQC/PYD710.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD710.py檔案,依下列題意進行作答,為一詞典輸入資料並進行搜尋,使輸出值符合題意要求。作答完成請另存新檔為PYA710.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,為一詞典輸入資料(以輸入鍵值"end"作為輸入結束點,詞典中將不包含鍵值"end"),再輸入一鍵值並檢視此鍵值是否存在於該詞典中。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 先輸入一個詞典,直至end結束輸入,再輸入一個鍵值進行搜尋是否存在 11 | 12 | 輸出說明 13 | 鍵值是否存在詞典中 14 | 15 | 輸入輸出範例 16 | 輸入與輸出會交雜如下,輸出的部份以粗體字表示 17 | Key: 123-4567-89 18 | Value: Jennifer 19 | Key: 987-6543-21 20 | Value: Tommy 21 | Key: 246-8246-82 22 | Value: Kay 23 | Key: end 24 | Search key: 246-8246-82 25 | True 26 | ''' 27 | 28 | my_dict = {} 29 | 30 | while True: 31 | key = input("Key: ") 32 | if key == "end": 33 | break 34 | 35 | value = input("Value: ") 36 | my_dict[key] = value 37 | 38 | search_key = input("Search key: ") 39 | print(search_key in my_dict) 40 | 41 | -------------------------------------------------------------------------------- /TQC/PYD802.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD802.py檔案,依下列題意進行作答,顯示字串每個字元對應的ASCII碼及其總和,使輸出值符合題意要求。作答完成請另存新檔為PYA802.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,要求使用者輸入一字串,顯示該字串每個字元的對應ASCII碼及其總和。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 一個字串 11 | 12 | 輸出說明 13 | 依序輸出字串中每個字元對應的ASCII碼 14 | 每個字元ASCII碼的總和 15 | 16 | 輸入輸出範例 17 | 範例輸入 18 | Kingdom 19 | 範例輸出 20 | ASCII code for 'K' is 75 21 | ASCII code for 'i' is 105 22 | ASCII code for 'n' is 110 23 | ASCII code for 'g' is 103 24 | ASCII code for 'd' is 100 25 | ASCII code for 'o' is 111 26 | ASCII code for 'm' is 109 27 | 713 28 | ''' 29 | 30 | total = 0 31 | string = input() 32 | for i in range(0, len(string)): 33 | num = ord(string[i]) 34 | print("ASCII code for '%s' is %d" % (string[i], num)) 35 | total += num 36 | 37 | print(total) -------------------------------------------------------------------------------- /TQC/PYD804.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD804.py檔案,依下列題意進行作答,將字串轉換成大寫及首字大寫,使輸出值符合題意要求。作答完成請另存新檔為PYA804.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者輸入一字串,分別將該字串轉換成全部大寫以及每個字的第一個字母大寫。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 一個字串 11 | 12 | 輸出說明 13 | 全部大寫 14 | 每個字的第一個字母大寫 15 | 16 | 輸入輸出範例 17 | 範例輸入 18 | learning python is funny 19 | 範例輸出 20 | LEARNING PYTHON IS FUNNY 21 | Learning Python Is Funny 22 | ''' 23 | st = input() 24 | 25 | str1 = st.upper() 26 | print(str1) 27 | 28 | str2 = st.title() 29 | print(str2) 30 | -------------------------------------------------------------------------------- /TQC/PYD806.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD806.py檔案,依下列題意進行作答,計算指定字元出現的次數,使輸出值符合題意要求。作答完成請另存新檔為PYA806.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,讓使用者輸入一字串和一字元,並將此字串及字元作為參數傳遞給名為compute()的函式,此函式將回傳該字串中指定字元出現的次數,接著再輸出結果。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 一個字串和一個字元 11 | 12 | 輸出說明 13 | 字串中指定字元出現的次數 14 | 15 | 輸入輸出範例 16 | 範例輸入 17 | Our country is beautiful 18 | u 19 | 範例輸出 20 | u occurs 4 time(s) 21 | ''' 22 | 23 | def compute(sentence, w): 24 | return sentence.count(w) 25 | 26 | sentence = input() 27 | word = input() 28 | print(word, "occurs", compute(sentence, word), "time(s)") -------------------------------------------------------------------------------- /TQC/PYD808.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD808.py檔案,依下列題意進行作答,進行社會安全碼格式檢查,使輸出值符合題意要求。作答完成請另存新檔為PYA808.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,提示使用者輸入一個社會安全碼SSN,格式為ddd-dd-dddd,d表示數字。若格式完全符合(正確的SSN)則顯示【Valid SSN】,否則顯示【Invalid SSN】。 7 | 8 | 3. 輸入輸出: 9 | 輸入說明 10 | 一個字串(格式為ddd-dd-dddd,d表示數字) 11 | 12 | 輸出說明 13 | 判斷是否符合SSN格式 14 | 15 | 輸入輸出範例 16 | 範例輸入1 17 | 329-48-4977 18 | 範例輸出1 19 | Valid SSN 20 | 範例輸入2 21 | 837-a3-3000 22 | 範例輸出2 23 | Invalid SSN 24 | ''' 25 | 26 | s = input() 27 | 28 | isSSN = (len(s) == 11) 29 | if isSSN: 30 | for i in range(len(s)): 31 | if i ==3 or i==6: 32 | if s[i] != '-': 33 | isSSN = False 34 | break 35 | elif not s[i].isdigit(): 36 | isSSN = False 37 | break 38 | 39 | if isSSN: 40 | print("Valid SSN") 41 | else: 42 | print("Invalid SSN") -------------------------------------------------------------------------------- /TQC/PYD810.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 1. 題目說明: 3 | 請開啟PYD810.py檔案,依下列題意進行作答,找出串列數字中最大值和最小值之間的差,使輸出值符合題意要求。作答完成請另存新檔為PYA810.py再進行評分。 4 | 5 | 2. 設計說明: 6 | 請撰寫一程式,首先要求使用者輸入正整數k(1 <= k <= 100),代表有k筆測試資料。每一筆測試資料是一串數字,每個數字之間以一空白區隔,請找出此串列數字中最大值和最小值之間的差。 7 | 8 | 提示:差值輸出到小數點後第二位。 9 | 10 | 3. 輸入輸出: 11 | 輸入說明 12 | 先輸入測試資料的筆數,再輸入每一筆測試資料(一串數字,每個數字之間以空白區隔) 13 | 14 | 輸出說明 15 | 每個串列數字中,最大值和最小值之間的差 16 | 17 | 輸入輸出範例 18 | 輸入與輸出會交雜如下,輸出的部份以粗體字表示 19 | 4 20 | 94 52.9 3.14 77 46 21 | 90.86 22 | -2 0 1000.34 -14.4 89 50 23 | 1014.74 24 | 87.78 33333 29.3 25 | 33303.70 26 | 9998 9996 9999 27 | 3.00 28 | ''' 29 | k = eval(input()) 30 | 31 | for i in range(k): 32 | str_num = input() 33 | str_num_list = str_num.split(' ') 34 | str_num_list = [eval(x) for x in str_num_list] 35 | print("%.2f" % (max(str_num_list)-min(str_num_list))) -------------------------------------------------------------------------------- /TQC/PYD902.py: -------------------------------------------------------------------------------- 1 | f = open("read.txt", 'r') 2 | data = f.read() 3 | f.close() 4 | 5 | num = data.split(' ') 6 | total = 0 7 | for i in range(0, len(num)): 8 | total += eval(num[i]) 9 | 10 | print(total) -------------------------------------------------------------------------------- /TQC/PYD904.py: -------------------------------------------------------------------------------- 1 | data = [] 2 | with open('read.txt','r') as file: 3 | for line in file: 4 | print(line) 5 | 6 | tmp = line.strip('\n').split(' ') 7 | tmp = [tmp[0], eval(tmp[1]), eval(tmp[2])] 8 | data.append(tmp) 9 | 10 | name = [data[x][0] for x in range(len(data))] 11 | height = [data[x][1] for x in range(len(data))] 12 | weight = [data[x][2] for x in range(len(data))] 13 | 14 | print("Average height: %.2f" % (sum(height)/ len(height))) 15 | print("Average weight: %.2f" % (sum(weight)/ len(weight))) 16 | 17 | max_h = max(height) 18 | max_w = max(weight) 19 | print("The tallest is %s with %.2fcm" % (name[height.index(max_h)], max_h)) 20 | 21 | print("The heaviest is %s with %.2fkg" % (name[weight.index(max_w)], max_w)) -------------------------------------------------------------------------------- /TQC/PYD906.py: -------------------------------------------------------------------------------- 1 | f_name = input() 2 | str_old = input() 3 | str_new = input() 4 | 5 | infile = open(f_name, 'r') 6 | data = infile.read() 7 | 8 | print("=== Before the replacement") 9 | print(data) 10 | infile.close() 11 | 12 | print("=== After the replacement") 13 | new_data = data.replace(str_old, str_new) 14 | print(new_data) 15 | 16 | outfile = open(f_name, 'w') 17 | outfile.write(new_data) 18 | outfile.close() -------------------------------------------------------------------------------- /TQC/PYD908.py: -------------------------------------------------------------------------------- 1 | f_name = input() 2 | n = int(input()) 3 | word_dict = dict() 4 | 5 | with open(f_name, 'r') as file: 6 | for line in file: 7 | word = line.strip('\n').split(' ') 8 | 9 | for x in word: 10 | if x in word_dict: 11 | word_dict[x] += 1 12 | else: 13 | word_dict[x] = 1 14 | word_list = word_dict.items() 15 | wordQTY = [x for (x, y) in word_list if y==n] 16 | 17 | sortedword = sorted(wordQTY) 18 | 19 | for x in sortedword: 20 | print(x) -------------------------------------------------------------------------------- /TQC/PYD910.py: -------------------------------------------------------------------------------- 1 | f_name = "read.dat" 2 | c_male = c_female = 0 3 | 4 | with open(f_name, 'rb') as file: 5 | for line in file: 6 | row = line.decode('utf-8') 7 | print(row) 8 | row = row.strip('\n').split(' ') 9 | 10 | if row[2] == '1': 11 | c_male += 1 12 | elif row[2] == '0': 13 | c_female += 1 14 | 15 | print("Number of males:", c_male) 16 | print("Number of females:", c_female) -------------------------------------------------------------------------------- /chat_gpt/.gitignore: -------------------------------------------------------------------------------- 1 | keys.py 2 | venv 3 | __pycache__ -------------------------------------------------------------------------------- /chat_gpt/README.md: -------------------------------------------------------------------------------- 1 | # ChatGPT on Python 2 | ## 目前使用chatGPT API都必需付費 3 | ## [線上說明](https://youtube.com/live/Li7ynJrfhTw) 4 | 5 | - ### 先至[ChatGPT註冊](https://platform.openai.com/docs/guides/chat),取得API Key。 6 | - ![](./images/pic1.png) 7 | - ![](./images/pic2.png) 8 | - ### [手動安裝ChatGPT的python套件](https://platform.openai.com/docs/api-reference/introduction) 9 | - ![](./images/pic3.png) -------------------------------------------------------------------------------- /chat_gpt/images/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/chat_gpt/images/pic1.png -------------------------------------------------------------------------------- /chat_gpt/images/pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/chat_gpt/images/pic2.png -------------------------------------------------------------------------------- /chat_gpt/images/pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/chat_gpt/images/pic3.png -------------------------------------------------------------------------------- /chat_gpt/index1.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "{'error': {'message': 'You exceeded your current quota, please check your plan and billing details.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}\n" 13 | ] 14 | } 15 | ], 16 | "source": [ 17 | "# 1. 使用request模組來串接API\n", 18 | "import requests\n", 19 | "import keys\n", 20 | "\n", 21 | "api_key = keys.key\n", 22 | "prompt = '請問如何學習python'\n", 23 | "\n", 24 | "response = requests.post(\n", 25 | " 'https://api.openai.com/v1/chat/completions',\n", 26 | " headers = {\n", 27 | " 'Content-Type': 'application/json',\n", 28 | " 'Authorization': f'Bearer {api_key}'\n", 29 | " },\n", 30 | " json = {\n", 31 | " 'model': 'gpt-3.5-turbo', # 一定要用chat可以用的模型\n", 32 | " 'messages' : [{\"role\": \"user\", \"content\": prompt}]\n", 33 | " })\n", 34 | "\n", 35 | "#使用json解析\n", 36 | "json = response.json()\n", 37 | "print(json)" 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 2, 43 | "metadata": {}, 44 | "outputs": [ 45 | { 46 | "name": "stdout", 47 | "output_type": "stream", 48 | "text": [ 49 | "{'error': {'message': 'You exceeded your current quota, please check your plan and billing details.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}\n" 50 | ] 51 | } 52 | ], 53 | "source": [ 54 | "# 1. 使用request模組來串接API\n", 55 | "import requests\n", 56 | "import keys\n", 57 | "api_key = keys.key\n", 58 | "prompt = \"如何學習python?\"\n", 59 | "\n", 60 | "response = requests.post(\n", 61 | " 'https://api.openai.com/v1/completions',\n", 62 | " headers = {\n", 63 | " 'Content-Type': 'application/json',\n", 64 | " 'Authorization': f'Bearer {api_key}'\n", 65 | " },\n", 66 | " json = {\n", 67 | " 'model': 'text-davinci-003',\n", 68 | " 'prompt': prompt,\n", 69 | " 'temperature': 0.4,\n", 70 | " 'max_tokens': 300\n", 71 | " })\n", 72 | "\n", 73 | "#使用json解析\n", 74 | "json = response.json()\n", 75 | "print(json)" 76 | ] 77 | } 78 | ], 79 | "metadata": { 80 | "kernelspec": { 81 | "display_name": "venv", 82 | "language": "python", 83 | "name": "python3" 84 | }, 85 | "language_info": { 86 | "codemirror_mode": { 87 | "name": "ipython", 88 | "version": 3 89 | }, 90 | "file_extension": ".py", 91 | "mimetype": "text/x-python", 92 | "name": "python", 93 | "nbconvert_exporter": "python", 94 | "pygments_lexer": "ipython3", 95 | "version": "3.10.8" 96 | } 97 | }, 98 | "nbformat": 4, 99 | "nbformat_minor": 2 100 | } 101 | -------------------------------------------------------------------------------- /chat_gpt/requirements.txt: -------------------------------------------------------------------------------- 1 | openai 2 | requests -------------------------------------------------------------------------------- /content.py: -------------------------------------------------------------------------------- 1 | #print(),input() 2 | x = int(input("請輸入整數x的值:")) 3 | y = int(input("請輸入整數y的值:")) 4 | print(x + y) 5 | -------------------------------------------------------------------------------- /gemini_api/README.md: -------------------------------------------------------------------------------- 1 | # Gemini API 2 | 3 | ## 必需申請Gemini API key 4 | 5 | ### Google Gemini 6 | - Google Gemini的免費版本,每分鐘限制呼叫60次. 7 | - Google Gemini文本生成的history歷史查閱,目前中文會出現亂碼 8 | - Google Gemini可以解析圖片 9 | 10 | ### 1.登入:https://ai.google.dev 11 | 12 | ![](./images/pic1.png) 13 | 14 | ### 建立 API Key 15 | 16 | ![](./images/pic2.png) 17 | 18 | ### 安裝套件 19 | 20 | ``` 21 | > pip install google-generativeai 22 | > pip install python-dotenv 23 | ``` 24 | 25 | ### 載入api 26 | 27 | ```python 28 | import google.generativeai as genai 29 | ``` 30 | 31 | ### 簡單範例 32 | #### .env file 33 | 34 | ``` 35 | Gemini_API_KEY='您的API_KEY' 36 | ``` 37 | 38 | ```python 39 | import google.generativeai as genai 40 | from dotenv import load_dotenv 41 | import os 42 | load_dotenv() 43 | 44 | genai.configure(api_key=os.environ['Gemini_API_KEY']) 45 | model = genai.GenerativeModel('gemini-1.5-flash') 46 | response = model.generate_content('我想要學習 演算法') 47 | print(response.text) 48 | ``` 49 | -------------------------------------------------------------------------------- /gemini_api/images/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/gemini_api/images/pic1.png -------------------------------------------------------------------------------- /gemini_api/images/pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/gemini_api/images/pic2.png -------------------------------------------------------------------------------- /gemini_line_bot/README.md: -------------------------------------------------------------------------------- 1 | ## Gemini 和 line bot整合 2 | 3 | #### requirements.txt 4 | 5 | ``` 6 | line-bot-sdk 7 | flask 8 | requests 9 | gunicorn 10 | google-generativeai 11 | python-dotenv 12 | ``` 13 | 14 | #### 環境變數 15 | 16 | ``` 17 | CHANNEL_ACCESS_TOKEN=xxxxxxx 18 | CHANNEL_SECRET=xxxxxxx 19 | Gemini_API_KEY=xxxxxxx 20 | #註解:要求render 指定python version 21 | PYTHON_VERSION=3.11.9 22 | ``` 23 | 24 | #### Build Command 25 | 26 | ``` 27 | pip install --upgrade pip && pip install -r requirements.txt 28 | ``` 29 | 30 | 31 | #### 程式碼 32 | 33 | ```python 34 | from flask import Flask, request, abort 35 | from linebot import LineBotApi, WebhookHandler 36 | from linebot.exceptions import InvalidSignatureError 37 | from linebot.models import * 38 | import google.generativeai as genai 39 | from dotenv import load_dotenv 40 | import os 41 | 42 | app = Flask(__name__) 43 | genai.configure(api_key=os.environ['Gemini_API_KEY']) 44 | model = genai.GenerativeModel("gemini-1.5-flash") 45 | 46 | line_bot_api = LineBotApi(os.environ['CHANNEL_ACCESS_TOKEN']) 47 | handler = WebhookHandler(os.environ['CHANNEL_SECRET']) 48 | 49 | @app.route("/") 50 | @app.route("/") 51 | def index(question:str=""): 52 | response = model.generate_content(f"{question},回應請輸出成為html格式") 53 | html_format = response.text 54 | html_format = html_format.replace("```html","").replace("```","") 55 | return html_format 56 | 57 | @app.route("/callback", methods=['POST']) 58 | def callback(): 59 | signature = request.headers['X-Line-Signature'] 60 | body = request.get_data(as_text=True) 61 | app.logger.info("Request body: " + body) 62 | try: 63 | handler.handle(body, signature) 64 | except InvalidSignatureError: 65 | abort(400) 66 | return 'OK' 67 | 68 | @handler.add(MessageEvent, message=TextMessage) 69 | def handle_message(event): 70 | response = model.generate_content(event.message.text) 71 | message = TextSendMessage(text=response.text) 72 | line_bot_api.reply_message(event.reply_token, message) 73 | ``` -------------------------------------------------------------------------------- /line/README.md: -------------------------------------------------------------------------------- 1 | # Line Notify服務 2 | ## 專案1:整合LINE Notify讓訊息發送至Line群組 3 | 4 | ### 申請步驟 5 | #### 1. 登入至[https://notify-bot.line.me/my/](https://notify-bot.line.me/my/). 6 | 7 | #### 2. 登入您自已的line帳號 8 | ![](line_log_in.png) 9 | 10 | #### 3. 點選發行存取權杖 11 | ![](image1.png) 12 | 13 | #### 4. 建立發行服務 14 | - 按下發行後,您的line將會收到提醒通知 15 | - 記得在line內將line Notify加入到您想要加入的line群組內 16 | 17 | ![](image2.png) 18 | 19 | #### 5.保留發行權杖(沒有保留,未來將無法找到這個金鑰) 20 | ![](image3.png) 21 | 22 | #### 6.line會建立一個新的連動服數 23 | ![](image5.png) 24 | 25 | ### 在自已電腦環境上安裝line的開發者套件 26 | pip install lineTool 27 | ![](image6.png) 28 | 29 | ### 在自已電腦環境上安裝requests套件 30 | pip install requests 31 | ![](image7.png) 32 | 33 | ### 測試是否安裝成功 34 | ```python 35 | >>> import lineTool 36 | >>> token = "請使用您剛剛取得的金鑰" 37 | >>> msg = "Python 語言整合通訊軟體,恭喜您" 38 | >>> response=lineTool.lineNotify(token,msg) 39 | >>> if response == 200: 40 | print("傳送成功") 41 | else: 42 | print("傳送失敗") 43 | ``` 44 | 45 | ![以上為程式碼畫面](image8.png) 46 | 47 | ![以上為line的畫面](image9.png) 48 | 49 | ## 專案2:整合LINE Notify和matplotlib發送圖片至Line群組 50 | 51 | ### 1.建立一個math.txt文字檔 52 | ``` 53 | Lewis,89 54 | Ada,99 55 | Julia,54 56 | Nancy,65 57 | Judy,78 58 | ``` 59 | ![上圖為建立math.txt文字檔](image11.png) 60 | 61 | ### 2.在自已的電腦安裝matplotlib 62 | pip install matplotlib 63 | ![上圖為安裝matplotlib成功的畫面](image10.png) 64 | 65 | ### 3.在jupyter notebook上建立程式 66 | ```python 67 | #請您輸入班上數學成績單,畫出圖片和建立圖片 68 | with open('math.txt') as file: 69 | content = file.read() 70 | 71 | contentList = content.split('\n') 72 | names, scores = [], [] 73 | for item in contentList: 74 | itemList = item.split(',') 75 | names.append(itemList[0]) 76 | scores.append(int(itemList[1])) 77 | 78 | import matplotlib.pyplot as plt 79 | plt.plot(names, scores) 80 | plt.savefig('math.jpg') 81 | ``` 82 | ![以上圖片為顯示和建立圖片的程式碼畫面](image12.png) 83 | 84 | ### 4.建立自訂的function可以同時傳送message和圖片給line Notify 85 | ```python 86 | #發送message和圖片給line 87 | import requests 88 | def sendLineNotify(token, msg, picURI): 89 | url = "https://notify-api.line.me/api/notify" 90 | headers = {"Authorization":"Bearer " + token} 91 | payload = {"message": msg} 92 | files = {"imageFile":open(picURI, 'rb')} 93 | r = requests.post(url, headers=headers, params = payload, files = files) 94 | return r.status_code 95 | 96 | token = "請使用您剛剛取得的金鑰" 97 | message = "5年9班數學成績" 98 | picURI = "math.jpg" 99 | sendLineNotify(token, message, picURI) 100 | ``` 101 | ![上圖為發送圖片給line的程式碼](image13.png) 102 | 103 | ### 5. line接收到訊息和圖片 104 | ![上圖為在line接收到的訊息和圖片](image14.png) 105 | 106 | 107 | 108 | 109 | ## youtube影片說明 110 | [![](https://img.youtube.com/vi/3bFdKi86pBw/3.jpg)](https://youtu.be/3bFdKi86pBw) 111 | -------------------------------------------------------------------------------- /line/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image1.png -------------------------------------------------------------------------------- /line/image10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image10.png -------------------------------------------------------------------------------- /line/image11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image11.png -------------------------------------------------------------------------------- /line/image12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image12.png -------------------------------------------------------------------------------- /line/image13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image13.png -------------------------------------------------------------------------------- /line/image14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image14.png -------------------------------------------------------------------------------- /line/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image2.png -------------------------------------------------------------------------------- /line/image3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image3.png -------------------------------------------------------------------------------- /line/image4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image4.png -------------------------------------------------------------------------------- /line/image5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image5.png -------------------------------------------------------------------------------- /line/image6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image6.png -------------------------------------------------------------------------------- /line/image7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image7.png -------------------------------------------------------------------------------- /line/image8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image8.png -------------------------------------------------------------------------------- /line/image9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/image9.png -------------------------------------------------------------------------------- /line/line_log_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line/line_log_in.png -------------------------------------------------------------------------------- /line_bot/README.md: -------------------------------------------------------------------------------- 1 | 2 | # line_bot 3 | ## [線上說明](https://youtube.com/live/WoJWBVvuyWo) 4 | ## 免費限制-render為免費的網路服務,當沒有任何連線時,會暫停服務,下一個連線時,必需20秒後才會回應(付費帳號就沒這問題),所以免費帳號只適合學習用途 5 | 6 | - python和linebot的使用 7 | - ![](./images/pic18.png) 8 | 9 | 10 | ## 需求 11 | - line帳號 12 | - github帳號 13 | - render帳號(https://render.com/) 14 | 15 | ## python套件需求 16 | - line-bot-sdk 17 | - flask 18 | - requests 19 | - gunicorn 20 | 21 | ## line-bot(line-MessageAPI)申請 22 | - ### 申請開發者[https://developers.line.biz/zh-hant/](https://developers.line.biz/zh-hant/) 23 | 24 | - ### (新)必需手動開啟messaging api功能 25 | 26 | 網址:https://manager.line.biz/account 27 | 28 | 設定->啟用Messaging API 29 | 30 | 31 | ![](./images/pic1.png) 32 | 33 | - ### Line-MessageAPI的重要設定事項 34 | 35 | - #### 登入後,進入Line Developers Console 36 | 37 | ![](./images/pic2.png) 38 | 39 | - #### 使用預設的Providers(youngTalk),並且建立一個Messaging API Channels. 40 | 41 | 42 | ![](./images/pic3.png) 43 | 44 | - #### 在Basic settings最重要的是取得Channel secret的密碼 45 | 46 | 47 | ![](./images/pic4.png) 48 | 49 | - #### 在Messaging API settings 50 | 51 | ![](./images/pic5.png) 52 | 53 | ![](./images/pic6.png) 54 | 55 | 56 | ## github repo內的設定 57 | 58 | - ### [參考我的repo](https://github.com/roberthsu2003/line_bot) 59 | 60 | - ![](./images/pic7.png) 61 | 62 | - ### index.py 63 | 64 | ```python 65 | from flask import Flask, request, abort 66 | from linebot import LineBotApi, WebhookHandler 67 | from linebot.exceptions import InvalidSignatureError 68 | from linebot.models import * 69 | import os 70 | 71 | app = Flask(__name__) 72 | 73 | line_bot_api = LineBotApi(os.environ['CHANNEL_ACCESS_TOKEN']) 74 | handler = WebhookHandler(os.environ['CHANNEL_SECRET']) 75 | 76 | 77 | @app.route("/callback", methods=['POST']) 78 | def callback(): 79 | signature = request.headers['X-Line-Signature'] 80 | body = request.get_data(as_text=True) 81 | app.logger.info("Request body: " + body) 82 | try: 83 | handler.handle(body, signature) 84 | except InvalidSignatureError: 85 | abort(400) 86 | return 'OK' 87 | 88 | @handler.add(MessageEvent, message=TextMessage) 89 | def handle_message(event): 90 | message = TextSendMessage(text=event.message.text) 91 | line_bot_api.reply_message(event.reply_token, message) 92 | 93 | import os 94 | if __name__ == "__main__": 95 | port = int(os.environ.get('PORT', 5000)) 96 | app.run(host='0.0.0.0', port=port) 97 | ``` 98 | 99 | - ### requirements.txt 100 | 101 | ``` 102 | line-bot-sdk 103 | flask 104 | requests 105 | gunicorn 106 | ``` 107 | 108 | ## render內的設定 109 | 110 | - ### [申請render帳號](https://render.com/) 111 | - ![](./images/pic8.png) 112 | - ### 建立一個web Service 113 | - ![](./images/pic9.png) 114 | - ### 使用連線至github repo 115 | - ![](./images/pic10.png) 116 | - ### 上傳repo至render 117 | - ![](./images/pic11.png) 118 | - ### render上傳的設定 119 | - ![](./images/pic12.png) 120 | - ![](./images/pic13.png) 121 | - ![](./images/pic14.png) 122 | - ### 將render的網址加入至Line Message內,記得最後加上/callback 123 | - ![](./images/pic15.png) 124 | - ![](./images/pic16.png) 125 | - 最後將line的channel access token copy至render,還有channel secret copy 至 render 126 | - ![](./images/pic17.png) 127 | 128 | 129 | 130 | 131 | 132 | -------------------------------------------------------------------------------- /line_bot/images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/.DS_Store -------------------------------------------------------------------------------- /line_bot/images/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic1.png -------------------------------------------------------------------------------- /line_bot/images/pic10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic10.png -------------------------------------------------------------------------------- /line_bot/images/pic11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic11.png -------------------------------------------------------------------------------- /line_bot/images/pic12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic12.png -------------------------------------------------------------------------------- /line_bot/images/pic13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic13.png -------------------------------------------------------------------------------- /line_bot/images/pic14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic14.png -------------------------------------------------------------------------------- /line_bot/images/pic15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic15.png -------------------------------------------------------------------------------- /line_bot/images/pic16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic16.png -------------------------------------------------------------------------------- /line_bot/images/pic17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic17.png -------------------------------------------------------------------------------- /line_bot/images/pic18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic18.png -------------------------------------------------------------------------------- /line_bot/images/pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic2.png -------------------------------------------------------------------------------- /line_bot/images/pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic3.png -------------------------------------------------------------------------------- /line_bot/images/pic4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic4.png -------------------------------------------------------------------------------- /line_bot/images/pic5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic5.png -------------------------------------------------------------------------------- /line_bot/images/pic6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic6.png -------------------------------------------------------------------------------- /line_bot/images/pic7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic7.png -------------------------------------------------------------------------------- /line_bot/images/pic8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic8.png -------------------------------------------------------------------------------- /line_bot/images/pic9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/line_bot/images/pic9.png -------------------------------------------------------------------------------- /mini_conda/README.md: -------------------------------------------------------------------------------- 1 | # conda 2 | ## 安裝mini conda 3 | - https://docs.anaconda.com/free/miniconda/index.html 4 | 5 | ## 取消termail一開始就進入base虛擬環境 6 | 7 | ``` 8 | conda config --set auto_activate_base false 9 | ``` 10 | 11 | ## conda init 12 | 13 | ``` 14 | conda init --all bash 15 | ``` 16 | 17 | ## conda版本檢查 18 | 19 | ``` 20 | conda -V 21 | ``` 22 | 23 | ## conda更新 24 | 25 | ``` 26 | conda update conda 27 | ``` 28 | 29 | ## 檢查目前已建立的虛擬環境 30 | 31 | ``` 32 | conda env list 33 | ``` 34 | 35 | ## 建立虛擬環境 36 | 37 | ``` 38 | conda create --name myenv python=3.10 39 | ``` 40 | 41 | ## 啟動虛擬環境 42 | 43 | ``` 44 | conda activate myenv 45 | ``` 46 | 47 | ## 離開虛擬環境 48 | 49 | ``` 50 | conda deactivate 51 | ``` 52 | 53 | ## 安裝套件 54 | 55 | ``` 56 | conda activate myenv 57 | conda install matplotlib 58 | ``` 59 | 60 | ``` 61 | conda install --name myenv matplotlib 62 | ``` 63 | 64 | ## 安裝requirement.txt 65 | 66 | ``` 67 | conda install --yes --file requirements.txt 68 | ``` 69 | 70 | ## 檢查目前安裝的套件 71 | 72 | ``` 73 | conda list 74 | ``` 75 | ## 刪除虛擬環境 76 | 77 | ``` 78 | conda env remove --name myenv 79 | ``` 80 | 81 | ## 刪除虛擬環境的套件 82 | 83 | ``` 84 | conda remove --name myenv matplotlib 85 | ``` 86 | -------------------------------------------------------------------------------- /pydantic/README.md: -------------------------------------------------------------------------------- 1 | # pydantic 2 | 3 | #### 1. [pydantic觀念說明1](./README.ipynb) 4 | #### 2. [pydantic觀念說明2](./README1.ipynb) 5 | #### 3. [學生分數.csv檔案轉換為pydantic的架構](./學生分數.ipynb) 6 | - 自訂實體method和property 7 | 8 | #### 4. [空氣品質aqi.csv](./空氣品質aqi_csv.ipynb) 9 | 10 | #### 5. [空氣品質aqi.json](./空氣品質aqi_json.ipynb) 11 | 12 | #### 6. [個股日成交資訊.csv檔案轉換為pydantic的架構](./個股日成交資訊.ipynb) 13 | - 欄位字串要轉換為float,int 14 | - 欄位字串在轉換前,先整理欄位字串 15 | 16 | #### 7.學生用範例: 17 | - data.json 18 | - 新北市食品工廠清冊.json -------------------------------------------------------------------------------- /pydantic/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Alice", 3 | "age": 30, 4 | "address": { 5 | "street": "123 Main St", 6 | "city": "Springfield", 7 | "zipcode": "12345" 8 | }, 9 | "projects": [ 10 | { 11 | "name": "Project A", 12 | "status": "completed" 13 | }, 14 | { 15 | "name": "Project B", 16 | "status": "ongoing" 17 | } 18 | ] 19 | } -------------------------------------------------------------------------------- /pydantic/學生分數.csv: -------------------------------------------------------------------------------- 1 | 姓名,科目1,科目2,科目3,科目4,科目5,科目6,科目7 2 | 吳淑惠,95,79,94,85,92,90,62 3 | 臧怡君,75,98,44,70,59,75,42 4 | 黃婷婷,92,73,100,89,66,57,92 5 | 白美珍,92,45,81,64,71,87,94 6 | 陳凱翔,96,66,43,54,65,62,81 7 | 劉慧君,90,67,45,63,60,70,81 8 | 柯韋成,63,68,84,49,81,70,88 9 | 林建宏,75,87,89,61,91,40,72 10 | 王士銘,44,59,80,98,65,44,80 11 | 謝佳穎,88,55,98,88,56,77,50 12 | 陳信宏,71,45,65,41,90,100,83 13 | 尚偉倫,60,43,95,57,63,100,72 14 | 蕭淑華,70,59,65,83,77,58,86 15 | 賴昌韻,77,85,61,88,44,76,55 16 | 賴苑禾,76,86,83,100,64,76,73 17 | 楊易政,87,75,99,48,77,41,51 18 | 高俊男,85,52,41,77,81,85,88 19 | 陳筱涵,68,79,62,71,81,63,51 20 | 羅佩樺,81,99,53,87,72,47,67 21 | 陳建香,54,81,95,56,91,41,81 22 | 童建霖,61,81,100,73,67,100,42 23 | 謝哲維,54,100,76,89,78,70,43 24 | 林建宏,58,100,47,76,79,72,67 25 | 劉嘉泰,100,49,70,42,98,71,97 26 | 郎慧萍,55,44,57,90,54,73,92 27 | 孫火清,75,91,49,97,89,81,45 28 | 林希啟,48,52,96,83,70,54,62 29 | 林世城,76,53,99,62,48,97,84 30 | 盧冠發,55,68,46,40,88,66,41 31 | 張軒宸,95,90,94,65,40,71,76 32 | 林康亮,90,68,65,84,97,68,59 33 | 林向鈺,66,97,54,52,50,79,92 34 | 吳孟穎,58,43,93,81,78,95,79 35 | 周怡啟,57,46,73,59,89,99,52 36 | 杜明延,98,75,56,71,84,79,97 37 | 溫重意,76,75,57,67,55,55,49 38 | 張嘉韋,94,44,78,70,97,52,72 39 | 許芳如,95,91,64,60,50,80,72 40 | 張韋成,86,60,99,73,85,94,41 41 | 錢佩豪,100,83,78,99,63,61,49 42 | 林昱芳,75,85,45,73,69,71,83 43 | 李進慧,72,88,85,60,68,65,77 44 | 戴萱能,86,49,81,45,80,50,62 45 | 林清英,77,44,67,76,88,92,90 46 | 吳麗卿,71,73,78,62,85,83,90 47 | 黃詩妃,68,77,53,44,84,71,78 48 | 鞠冠宇,57,70,50,99,57,100,67 49 | 彭虹屏,71,49,72,59,85,71,84 50 | 賴苑禾,65,46,45,54,53,46,97 51 | 盧冠發,72,73,78,51,62,70,94 52 | -------------------------------------------------------------------------------- /pydantic/學生分數.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "597\n", 13 | "597\n", 14 | "463\n", 15 | "463\n", 16 | "569\n", 17 | "569\n", 18 | "534\n", 19 | "534\n", 20 | "467\n", 21 | "467\n", 22 | "476\n", 23 | "476\n", 24 | "503\n", 25 | "503\n", 26 | "515\n", 27 | "515\n", 28 | "470\n", 29 | "470\n", 30 | "512\n", 31 | "512\n", 32 | "495\n", 33 | "495\n", 34 | "490\n", 35 | "490\n", 36 | "498\n", 37 | "498\n", 38 | "486\n", 39 | "486\n", 40 | "558\n", 41 | "558\n", 42 | "478\n", 43 | "478\n", 44 | "509\n", 45 | "509\n", 46 | "475\n", 47 | "475\n", 48 | "506\n", 49 | "506\n", 50 | "499\n", 51 | "499\n", 52 | "524\n", 53 | "524\n", 54 | "510\n", 55 | "510\n", 56 | "499\n", 57 | "499\n", 58 | "527\n", 59 | "527\n", 60 | "465\n", 61 | "465\n", 62 | "527\n", 63 | "527\n", 64 | "465\n", 65 | "465\n", 66 | "519\n", 67 | "519\n", 68 | "404\n", 69 | "404\n", 70 | "531\n", 71 | "531\n", 72 | "531\n", 73 | "531\n", 74 | "490\n", 75 | "490\n", 76 | "527\n", 77 | "527\n", 78 | "475\n", 79 | "475\n", 80 | "560\n", 81 | "560\n", 82 | "434\n", 83 | "434\n", 84 | "507\n", 85 | "507\n", 86 | "512\n", 87 | "512\n", 88 | "538\n", 89 | "538\n", 90 | "533\n", 91 | "533\n", 92 | "501\n", 93 | "501\n", 94 | "515\n", 95 | "515\n", 96 | "453\n", 97 | "453\n", 98 | "534\n", 99 | "534\n", 100 | "542\n", 101 | "542\n", 102 | "475\n", 103 | "475\n", 104 | "500\n", 105 | "500\n", 106 | "491\n", 107 | "491\n", 108 | "406\n", 109 | "406\n", 110 | "500\n", 111 | "500\n" 112 | ] 113 | } 114 | ], 115 | "source": [ 116 | "import csv\n", 117 | "from pydantic import RootModel,BaseModel,Field\n", 118 | "from pprint import pprint\n", 119 | "\n", 120 | "\n", 121 | "class Student(BaseModel):\n", 122 | " 姓名: str\n", 123 | " 國文: int = Field(alias='科目1')\n", 124 | " 英文: int = Field(alias='科目2')\n", 125 | " 數學: int = Field(alias='科目3')\n", 126 | " 地理: int = Field(alias='科目4')\n", 127 | " 歷史: int = Field(alias='科目5')\n", 128 | " 社會: int = Field(alias='科目6')\n", 129 | " 品德: int = Field(alias='科目7')\n", 130 | "\n", 131 | " def total(self) -> int:\n", 132 | " return self.國文 + self.英文 + self.數學 + self.地理 + self.歷史 + self.社會 + self.品德\n", 133 | " \n", 134 | " @property\n", 135 | " def sum(self) -> int:\n", 136 | " return self.國文 + self.英文 + self.數學 + self.地理 + self.歷史 + self.社會 + self.品德\n", 137 | "\n", 138 | "class Students(RootModel):\n", 139 | " root:list[Student]\n", 140 | "\n", 141 | " def __iter__(self):\n", 142 | " return iter(self.root)\n", 143 | " \n", 144 | " def __getitem__(self,item):\n", 145 | " return self.root[item]\n", 146 | "\n", 147 | "with open('學生分數.csv',encoding='utf8', newline='') as csvfile:\n", 148 | " reader = csv.DictReader(csvfile)\n", 149 | " #for row in reader:\n", 150 | " # print(row)\n", 151 | " students = Students(reader)\n", 152 | "\n", 153 | "for student in students:\n", 154 | " print(student.total())\n", 155 | " print(student.sum)\n", 156 | "\n" 157 | ] 158 | } 159 | ], 160 | "metadata": { 161 | "kernelspec": { 162 | "display_name": "Python 3", 163 | "language": "python", 164 | "name": "python3" 165 | }, 166 | "language_info": { 167 | "codemirror_mode": { 168 | "name": "ipython", 169 | "version": 3 170 | }, 171 | "file_extension": ".py", 172 | "mimetype": "text/x-python", 173 | "name": "python", 174 | "nbconvert_exporter": "python", 175 | "pygments_lexer": "ipython3", 176 | "version": "3.10.13" 177 | } 178 | }, 179 | "nbformat": 4, 180 | "nbformat_minor": 2 181 | } 182 | -------------------------------------------------------------------------------- /python內建的資料結構/array1.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | ''' 3 | #array1.py 4 | #建立一個包含3個元素的整數陣列並設定初始值,代表個人的三科成績,再依序顯示各科成績。 5 | 6 | 顯示: 7 | 3科的成績是:70, 80, 90 8 | ''' 9 | 10 | 11 | scores = (70, 80, 90) 12 | print("3科的成績是:%d, %d, %d" % (scores[0], scores[1], scores[2])) 13 | 14 | -------------------------------------------------------------------------------- /python內建的資料結構/biglottery.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | ''' 3 | #============================================================================ 4 | # Name : biglottery.py 5 | #撰寫一個大樂透電腦自動選號程式,程式執行會以亂數的方式顯示1-49之間七個不重複的大樂透號碼。 6 | 7 | #============================================================ 8 | 9 | 本期大樂透電腦選號號碼如下: 10 | 11 | 2 28 8 42 49 20 15 12 | 13 | 特別號:15 14 | 15 | ''' 16 | 17 | import random 18 | 19 | if __name__ == '__main__': 20 | lot = set() 21 | while(len(lot) <= 7): 22 | rValue = randint(1, 49) 23 | lot.add(rValue) 24 | print('本期大樂透電腦選號號碼如下:') 25 | 26 | lotList = list(lot) 27 | specialNum = lotList.pop() 28 | for item in lotList: 29 | print(item, end=' ') 30 | 31 | print('特別號:%d' % specialNum ) 32 | -------------------------------------------------------------------------------- /python內建的資料結構/bubble.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | 3 | ''' 4 | # Name : bubble.py 5 | #任由使用者輸入任意個數的數值序列,程式會將此數值序列由小到大和由大到小排序後顯示 6 | #============================================================ 7 | 8 | 請輸入要排序的數值個數:5 9 | 請輸入第1個數值:45 10 | 請輸入第2個數值:78 11 | 請輸入第3個數值:24 12 | 請輸入第4個數值:69 13 | 請輸入第5個數值:91 14 | 排序前 15 | 45.0 78.0 24.0 69.0 91.0 16 | 由小到大排序後: 17 | 24.0 45.0 69.0 78.0 91.0 18 | 由大到小排序後: 19 | 91.0 78.0 69.0 45.0 24.0 20 | #============================================================ 21 | ''' 22 | 23 | if __name__ == '__main__': 24 | nums = int(input('請輸入要排序的數值個數:')) 25 | integers = list() 26 | for i in range(nums): 27 | inputNum = float(input('請輸入第{:d}個數值:'.format(i+1))) 28 | integers.append(inputNum) 29 | 30 | print("排序前") 31 | for i in integers: 32 | print(i, end=' ') 33 | print() 34 | print('由小到大排序後:') 35 | for i in sorted(integers): 36 | print(i, end=' ') 37 | print() 38 | print('由大到小排序後:') 39 | for i in sorted(integers,reverse=True): 40 | print(i, end=' ') 41 | print() -------------------------------------------------------------------------------- /python內建的資料結構/initial2.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | 3 | ''' 4 | #============================================================================ 5 | # Name : initial2.py 6 | #建立一個2*3的二維陣列並初始化,用來儲存2個學生各三科成績,再以2層巢狀迴圈將所有成績顯示出來。 7 | 8 | #============================================================ 9 | 10 | 第1位學生第1科成績:85 11 | 第1位學生第2科成績:82 12 | 第1位學生第3科成績:90 13 | #================================================ 14 | 第2位學生第1科成績:76 15 | 第2位學生第2科成績:95 16 | 第2位學生第3科成績:89 17 | #================================================ 18 | 19 | ''' 20 | if __name__ == '__main__': 21 | students = [[85, 82, 90],[76, 95, 89]] 22 | for index,student in enumerate(students): 23 | for n,score in enumerate(student): 24 | print('第{0:d}位學生第{1:d}科成績:{2:d}'.format(index+1, n+1 ,score)) 25 | print('===================================') 26 | 27 | -------------------------------------------------------------------------------- /python內建的資料結構/min.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | #問題 min.py 4 | #試使用陣列配合for迴圈,找尋陣列中最小值的程式,程式執行時會要求將輸入數值的數量,輸入完畢會顯示所輸入數值中的最小值 5 | #===================================================================== 6 | 請輸入數值:4 7 | 請輸入第1數值:4 8 | 請輸入第2數值:5 9 | 請輸入第3數值:6 10 | 請輸入第4數值:7 11 | 4 | 5 | 6 | 7 | 最小值是:4 12 | #===================================================================== 13 | ''' 14 | 15 | if __name__ == '__main__': 16 | integers = list() 17 | nums = int(input("請輸入數值:")) 18 | for i in range(nums): 19 | inputNum = int(input('請輸入第{:d}數值:'.format(i+1))) 20 | integers.append(inputNum) 21 | 22 | integers.sort() 23 | 24 | for item in integers: 25 | print(item,end=" | ") 26 | 27 | print("最小值是:",integers[0]) 28 | 29 | -------------------------------------------------------------------------------- /python內建的資料結構/names.txt: -------------------------------------------------------------------------------- 1 | 陳怡伶 2 | 馮芳如 3 | 蒙淑惠 4 | 張軒宸 5 | 陳向愛 6 | 賴心怡 7 | 王怡珊 8 | 林詠斌 9 | 陳淑娟 10 | 崔孝憲 11 | 林希啟 12 | 楊韋廷 13 | 陳文賢 14 | 王士銘 15 | 賴昌韻 16 | 黃名明 17 | 吳麗卿 18 | 游治旺 19 | 蔡嘉音 20 | 黃靜怡 21 | 黃淑芬 22 | 龔姵君 23 | 景歡燦 24 | 李政成 25 | 楊綺芬 26 | 昌嘉洋 27 | 李慈啟 28 | 游倫城 29 | 林淑安 30 | 蔡士賢 31 | 林世城 32 | 林佳蓉 33 | 柯宜臻 34 | 傅佳琳 35 | 林瑞喬 36 | 林佳慧 37 | 鍾俞禎 38 | 劉慧君 39 | 劉林中 40 | 林怡偉 41 | 余丞苓 42 | 黃佩玲 43 | 林建宏 44 | 方雅慧 45 | 林柏洋 46 | 郭舜昇 47 | 艾巧夫 48 | 童建霖 49 | 蔡至剛 50 | 黃心航 51 | 張凡成 52 | 郭淑枝 53 | 黃必琪 54 | 楊健麟 55 | 林建勳 56 | 鄭琇亞 57 | 王雅琴 58 | 李美洋 59 | 楊少亮 60 | 王泓泰 61 | 黃江旭 62 | 王梅劭 63 | 林佳光 64 | 盧必妍 65 | 林思賢 66 | 鄧哲榮 67 | 陳家年 68 | 張俊傑 69 | 洪阿惠 70 | 陳彥治 71 | 盧冠發 72 | 程玫靖 73 | 潘俊賢 74 | 呂傑宣 75 | 鄭孟芳 76 | 彭茹靖 77 | 王孝純 78 | 吳昕婷 79 | 朱惠儀 80 | 盧文啟 81 | 謝佳穎 82 | 鄭憲定 83 | 馮淑芬 84 | 聶心怡 85 | 黃志福 86 | 馬彥文 87 | 郭淑真 88 | 吳欣書 89 | 鄭佳玲 90 | 黃健發 91 | 胡姿婷 92 | 林義皓 93 | 胡芳瑜 94 | 楊易政 95 | 王德城 96 | 劉依婷 97 | 吳俐芷 98 | 黃詩妃 99 | 柯韋成 100 | 鄧亭聿 101 | 王雅慧 102 | 陳凱翔 103 | 藍哲嘉 104 | 趙偉銘 105 | 張韋成 106 | 林向鈺 107 | 周琬婷 108 | 尚偉倫 109 | 賴佳雯 110 | 陳姵彬 111 | 林群清 112 | 趙家豪 113 | 李政白 114 | 林俊翔 115 | 李進慧 116 | 楊韻如 117 | 藍姿婷 118 | 劉嘉泰 119 | 王柏聖 120 | 孫宜珊 121 | 戴萱能 122 | 高士凱 123 | 楊又源 124 | 劉昀天 125 | 王怡君 126 | 余月修 127 | 劉萬季 128 | 陳信宏 129 | 陳孝邦 130 | 朱彥志 131 | 陳奇瑄 132 | 鄧淑娟 133 | 陳逸凡 134 | 張牧聿 135 | 唐雪豪 136 | 林康亮 137 | 黃旻林 138 | 蕭淑華 139 | 劉雯芬 140 | 陳美惠 141 | 孫火清 142 | 溫法堯 143 | 錢欣潔 144 | 陳倩潔 145 | 李雅怡 146 | 白美珍 147 | 葉志峰 148 | 黃佩芬 149 | 黃麗美 150 | 黃奎紹 151 | 邱亭君 152 | 詹忠光 153 | 戚亨 154 | 賴又琦 155 | 林佳人 156 | 黃善迪 157 | 賴苑禾 158 | 溫重意 159 | 周怡啟 160 | 王明昇 161 | 羅佩樺 162 | 陳家維 163 | 張莉雯 164 | 高俊男 165 | 林冠蕙 166 | 王品星 167 | 吳孟穎 168 | 黃雅慧 169 | 馮耀中 170 | 元延辛 171 | 王坤安 172 | 陳慧君 173 | 張伊映 174 | 林士凱 175 | 蘇婷婷 176 | 陳淑萍 177 | 林玉佩 178 | 謝貞妃 179 | 杜儀鳳 180 | 陳倩妮 181 | 胡淑貞 182 | 楊偉翔 183 | 姜琬婷 184 | 張雅芬 185 | 葉祖雄 186 | 沈心利 187 | 彭虹屏 188 | 余宗儒 189 | 李立偉 190 | 臧怡君 191 | 吳振瑋 192 | 陳建豪 193 | 蕭怡伶 194 | 周芷蓁 195 | 黃偉剛 196 | 黃婷婷 197 | 郎慧萍 198 | 林昱芳 199 | 趙宛真 200 | 白世宏 201 | 杜明延 202 | 許淑婷 203 | 林珍旺 204 | 蔡孟泉 205 | 吳晴洋 206 | 游一鈺 207 | 朱士弘 208 | 黃政甫 209 | 游淑惠 210 | 張婕妤 211 | 陳逸華 212 | 張天亨 213 | 張嘉韋 214 | 王志謙 215 | 黎惠雯 216 | 高信宏 217 | 梁柏宇 218 | 林志喜 219 | 金宜芳 220 | 簡國瑋 221 | 林清英 222 | 黃彥孝 223 | 鄭奇翰 224 | 李慶亮 225 | 李蓉瑞 226 | 張明惟 227 | 游詩亞 228 | 黃嘉琪 229 | 張家秀 230 | 吳柏誠 231 | 陳得映 232 | 郭致恬 233 | 林麗萍 234 | 陳樂紫 235 | 翁鈺婷 236 | 蔡世馨 237 | 楊建安 238 | 李湘婷 239 | 鞠冠宇 240 | 林志成 241 | 陳信念 242 | 林益妏 243 | 蔡偉成 244 | 王惠皓 245 | 王筱婷 246 | 楊火帆 247 | 陳怡珊 248 | 張慧君 249 | 翁羽威 250 | 羅幸娥 251 | 陳俊憲 252 | 洪奎夫 253 | 翁均安 254 | 吳明妮 255 | 高智超 256 | 王人仰 257 | 劉旭士 258 | 蘇凡菁 259 | 謝哲維 260 | 彭偉妃 261 | 劉耿琦 262 | 黃柏宇 263 | 李佳彥 264 | 唐翊修 265 | 陳建香 266 | 葉軍仰 267 | 吳志宣 268 | 林珈發 269 | 黃翔杰 270 | 郭坤花 271 | 吳淑惠 272 | 簡美君 273 | 許芳如 274 | 謝水儒 275 | 陳怡容 276 | 蔡欣汝 277 | 王良斌 278 | 周家銘 279 | 張凱妮 280 | 鄭淑珍 281 | 陳嘉淑 282 | 魏秋萍 283 | 簡佳樺 284 | 劉佳佩 285 | 李彥伸 286 | 陳筱涵 287 | 蔡明平 288 | 王展人 289 | 方筠紹 290 | 陳志偉 291 | 錢佩豪 292 | 陳冠霞 293 | 潘英迪 294 | 陳冠竹 295 | 李淑芳 296 | 謝南慧 297 | 趙家豪 298 | 龐皓芳 299 | 張彥博 -------------------------------------------------------------------------------- /python內建的資料結構/ninenine.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | 3 | ''' 4 | #問題 ninenine.py 5 | #以程式建立 9 x 9 的二維整數陣列,陣列內容是九九乘法表的乘積,並將之輸出 6 | 7 | #顯示========== 8 | 1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 9 | 2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 10 | 3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 11 | 4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 12 | 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 13 | 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54 14 | 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63 15 | 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 16 | 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 17 | 18 | ''' 19 | 20 | if __name__ == '__main__': 21 | nums = list(range(1,10)) 22 | for i in nums: 23 | for j in nums: 24 | print('{0:d} * {1:d} = {2:d}'.format(i,j,i*j),end='\t') 25 | print() 26 | -------------------------------------------------------------------------------- /python內建的資料結構/sale_s.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | 3 | ''' 4 | #問題 sale_s.py 5 | #小英是百貨公司結帳員,請您為她設計一個程式,先輸入客戶購買的貨品件數,再依此件數宣告陣列來儲存貨品價格,最後計算全部貨品總價 6 | 7 | 顯示======= 8 | 請輸入購買貨品件數:4 9 | 請輸入第1件貨品的價格:xxx 10 | 請輸入第2件貨品的價格:xxx 11 | 請輸入第3件貨品的價格:xxx 12 | 請輸入第4件貨品的價格:xxx 13 | 全部貨品總價為:xxxxx元 14 | 15 | ''' 16 | 17 | if __name__ == '__main__': 18 | nums = int(input("請輸入購買貨品件數:")) 19 | products = list() 20 | num = 1 21 | sum = 0 22 | while(num <= nums): 23 | score = int(input("請輸入第{:d}件貨品的價格".format(num))) 24 | products.append(score) 25 | sum += score 26 | num += 1 27 | 28 | print("全部貨品總價為:{:d}元".format(sum)) -------------------------------------------------------------------------------- /python內建的資料結構/score1.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | 3 | ''' 4 | # Name : score1.py 5 | #建立一個包含五個元素的整數陣列,讓使用者輸入五位學生的成績,然後計算班級總成績及平均成績 6 | #============================================================ 7 | 請輸入第1位學的成績78 8 | 請輸入第2位學的成績89 9 | 請輸入第3位學的成績67 10 | 請輸入第4位學的成績90 11 | 請輸入第5位學的成績89 12 | 全班總成績為:413分,平均為82.6分 13 | #============================================================ 14 | ''' 15 | 16 | nums = 5 17 | scores = [] 18 | sum = 0 19 | for i in range(5): 20 | i += 1 21 | print("請輸入第{0:d}位學生的資料:".format(i)) 22 | scores.append(int(input())) 23 | 24 | for score in scores: 25 | sum += score; 26 | 27 | ave = sum / nums 28 | print("全班總成績為:{0:d}分,平均為{1:.2f}分".format(sum, ave)) -------------------------------------------------------------------------------- /python內建的資料結構/sequential.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | ''' 3 | #Name : sequential.py 4 | #百貨公司舉辦週年抽獎活動,將顧客的抽獎編號及姓名分別儲存於陣列中,使用者輸入編號,程式會搜尋出該編號的姓名並顯示。若查詢不到也會顯示無此編號的訊息 5 | 6 | #============================================================ 7 | 8 | 請輸入中獎者的編號943 9 | 中獎者的姓名為:stu3 10 | 11 | #============================================================ 12 | ''' 13 | 14 | if __name__ == '__main__': 15 | nums = [256, 731, 943, 389, 142, 645, 829, 945, 371, 418] 16 | names = ["stu1","stu2","stu3","stu4","stu5","stu6","stu7","stu8","stu9","stu10"] 17 | inputNum = int(input('請輸入中獎者的編號:')) 18 | if inputNum in nums: 19 | index = nums.index(inputNum) 20 | name = names[index] 21 | print('中獎者的姓名為:',name) 22 | else: 23 | print('無此中獎號碼!') 24 | -------------------------------------------------------------------------------- /python內建的資料結構/sequential1.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | ''' 3 | #Name : sequential1.py 4 | #百貨公司舉辦週年抽獎活動,將顧客的抽獎編號及姓名分別儲存於陣列中,使用者輸入編號,程式會搜尋出該編號的姓名並顯示。若查詢不到也會顯示無此編號的訊息 5 | 6 | #============================================================ 7 | 8 | 請輸入中獎者的編號943 9 | 中獎者的姓名為:stu3 10 | 11 | #============================================================ 12 | ''' 13 | 14 | if __name__ == '__main__': 15 | nums = (256, 731, 943, 389, 142, 645, 829, 945, 371, 418) 16 | names = ("stu1", "stu2", "stu3", "stu4", "stu5", "stu6", "stu7", "stu8", "stu9", "stu10") 17 | data = {} 18 | for item in zip(nums, names): 19 | data[item[0]] = item[1] 20 | 21 | #comprehension: 22 | #data = {item[0]:item[1] for item in zip(nums, names)} 23 | #print(data) 24 | 25 | inputNum = int(input('請輸入中獎者的編號:')) 26 | if inputNum in data: 27 | name = data[inputNum] 28 | print('中獎者的姓名為:', name) 29 | else: 30 | print('無此中獎號碼!') -------------------------------------------------------------------------------- /python內建的資料結構/vote.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | 3 | ''' 4 | #============================================================================ 5 | # Name : vote.py 6 | #設計一個投票統計表,包含計算各四位歌手3個地區投票數及總得票數,最後顯示得票數和得票率(計算至小數4位) 7 | #=============================================================== 8 | 9 | names[0]:周華見 10 | names[1]:劉得華 11 | names[2]:張學有 12 | names[3]:梁朝為 13 | 周華見總票數為:1623 14 | 周華見得票率為22.7025% 15 | 16 | 劉得華總票數為:1726 17 | 劉得華得票率為24.1432% 18 | 19 | 張學有總票數為:1519 20 | 張學有得票率為21.2477% 21 | 22 | 梁朝為總票數為:2281 23 | 梁朝為得票率為31.9066% 24 | 25 | ''' 26 | 27 | if __name__ == '__main__': 28 | names = ["周華見", "劉得華", "張學有", "梁朝為"] 29 | for index,name in enumerate(names): 30 | print('name[{0:d}]:{1:s}'.format(index,name)) 31 | 32 | votes = [[713, 600, 310],[999, 512, 215],[543, 689,287],[1125,387, 769]] 33 | 34 | totalVotes = 0 35 | for personVotes in votes: 36 | for vote in personVotes: 37 | totalVotes += vote; 38 | 39 | data = {} 40 | for index,name in enumerate(names): 41 | item = {name:votes[index]} 42 | data.update(item) 43 | 44 | #comprehension 45 | #data = {name:votes[index] for index,name in enumerate(names)} 46 | #print(data) 47 | 48 | for item in data.items(): 49 | name = item[0] 50 | scores = item[1] 51 | personScore = 0 52 | for score in scores: 53 | personScore += score 54 | 55 | print('{0:s}總票數為:{1:d}'.format(name,personScore)) 56 | print('{0:s}得票率為:{1:.4f}%\n'.format(name,personScore/totalVotes)) 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /python內建的資料結構/學生成績.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import random\n", 10 | "def get_score() -> list:\n", 11 | " score = []\n", 12 | " for i in range(5):\n", 13 | " score.append(random.randint(50, 100))\n", 14 | " return score\n", 15 | "\n", 16 | "def get_names(nums:int) -> list:\n", 17 | " with open('names.txt',encoding='utf-8',newline='') as file:\n", 18 | " names_str = file.read()\n", 19 | " all_names_list = names_str.split(sep=\"\\n\")\n", 20 | " names_list = random.choices(all_names_list,k=nums) #取出一定數量的姓名\n", 21 | " return names_list" 22 | ] 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": 5, 27 | "metadata": {}, 28 | "outputs": [ 29 | { 30 | "data": { 31 | "text/plain": [ 32 | "[['王泓泰', 86, 56, 72, 78, 72],\n", 33 | " ['童建霖', 79, 84, 68, 62, 99],\n", 34 | " ['方雅慧', 91, 98, 93, 62, 73],\n", 35 | " ['林瑞喬', 91, 74, 97, 80, 56],\n", 36 | " ['周家銘', 61, 53, 90, 55, 90],\n", 37 | " ['陳慧君', 67, 62, 97, 65, 86],\n", 38 | " ['陳嘉淑', 75, 91, 88, 61, 99],\n", 39 | " ['黃淑芬', 79, 77, 98, 91, 97],\n", 40 | " ['唐雪豪', 75, 86, 73, 52, 79],\n", 41 | " ['陳嘉淑', 62, 85, 50, 95, 70],\n", 42 | " ['邱亭君', 76, 63, 98, 52, 78],\n", 43 | " ['戚亨', 65, 54, 62, 95, 75],\n", 44 | " ['景歡燦', 66, 63, 95, 69, 78],\n", 45 | " ['黃旻林', 84, 50, 52, 99, 79],\n", 46 | " ['楊易政', 69, 69, 59, 88, 81],\n", 47 | " ['邱亭君', 53, 88, 84, 93, 93],\n", 48 | " ['楊少亮', 65, 57, 73, 91, 63],\n", 49 | " ['陳樂紫', 60, 72, 80, 65, 64],\n", 50 | " ['游詩亞', 82, 86, 68, 74, 61],\n", 51 | " ['柯韋成', 56, 89, 82, 81, 70],\n", 52 | " ['李政白', 62, 95, 76, 90, 58],\n", 53 | " ['龐皓芳', 82, 78, 97, 55, 88],\n", 54 | " ['孫宜珊', 56, 92, 91, 62, 52],\n", 55 | " ['陳建香', 79, 89, 71, 72, 98],\n", 56 | " ['陳逸華', 90, 67, 92, 86, 79],\n", 57 | " ['林建宏', 86, 87, 50, 70, 53],\n", 58 | " ['游一鈺', 79, 55, 74, 94, 94],\n", 59 | " ['楊易政', 52, 97, 88, 87, 85],\n", 60 | " ['盧冠發', 56, 90, 95, 72, 76],\n", 61 | " ['彭茹靖', 56, 89, 90, 68, 54],\n", 62 | " ['白世宏', 61, 87, 63, 79, 76],\n", 63 | " ['馮芳如', 60, 90, 72, 56, 60],\n", 64 | " ['王人仰', 67, 77, 94, 60, 84],\n", 65 | " ['林怡偉', 51, 79, 70, 72, 82],\n", 66 | " ['劉嘉泰', 77, 54, 80, 63, 100],\n", 67 | " ['朱惠儀', 100, 66, 82, 97, 50],\n", 68 | " ['林冠蕙', 94, 98, 64, 50, 59],\n", 69 | " ['張慧君', 74, 76, 58, 86, 55],\n", 70 | " ['林怡偉', 61, 89, 55, 93, 67],\n", 71 | " ['李佳彥', 82, 86, 94, 87, 90],\n", 72 | " ['吳昕婷', 68, 84, 86, 67, 83],\n", 73 | " ['王柏聖', 95, 60, 76, 63, 93],\n", 74 | " ['林怡偉', 95, 51, 81, 81, 76],\n", 75 | " ['葉志峰', 72, 100, 89, 59, 59],\n", 76 | " ['鞠冠宇', 72, 89, 56, 53, 97],\n", 77 | " ['王怡珊', 95, 94, 62, 76, 56],\n", 78 | " ['馬彥文', 61, 94, 67, 72, 56],\n", 79 | " ['林瑞喬', 79, 63, 89, 92, 53],\n", 80 | " ['趙家豪', 89, 76, 60, 95, 94],\n", 81 | " ['陳逸華', 68, 54, 70, 61, 71]]" 82 | ] 83 | }, 84 | "execution_count": 5, 85 | "metadata": {}, 86 | "output_type": "execute_result" 87 | } 88 | ], 89 | "source": [ 90 | "nums_int = int(input(\"請輸入學生數:\"))\n", 91 | "#取得nums_int個姓名\n", 92 | "names_list = get_names(nums_int)\n", 93 | "students = []\n", 94 | "for i in range(nums_int):\n", 95 | " scores = get_score()\n", 96 | " new_list = [names_list[i]] + scores\n", 97 | " students.append(new_list)\n", 98 | "students" 99 | ] 100 | }, 101 | { 102 | "cell_type": "code", 103 | "execution_count": 7, 104 | "metadata": {}, 105 | "outputs": [ 106 | { 107 | "name": "stdout", 108 | "output_type": "stream", 109 | "text": [ 110 | "存檔成功\n" 111 | ] 112 | } 113 | ], 114 | "source": [ 115 | "import csv\n", 116 | "#將2維list儲存為csv檔\n", 117 | "fileName = input(\"請輸入檔案名:(csv)\")\n", 118 | "with open(f'{fileName}.csv',mode='w',encoding='utf-8', newline='') as file:\n", 119 | " csv_writer = csv.writer(file)\n", 120 | " csv_writer.writerow(['姓名', '國文', '英文', '數學', '地理', '歷史'])\n", 121 | " csv_writer.writerows(students)\n", 122 | "\n", 123 | "print(\"存檔成功\")" 124 | ] 125 | } 126 | ], 127 | "metadata": { 128 | "kernelspec": { 129 | "display_name": "Python 3", 130 | "language": "python", 131 | "name": "python3" 132 | }, 133 | "language_info": { 134 | "codemirror_mode": { 135 | "name": "ipython", 136 | "version": 3 137 | }, 138 | "file_extension": ".py", 139 | "mimetype": "text/x-python", 140 | "name": "python", 141 | "nbconvert_exporter": "python", 142 | "pygments_lexer": "ipython3", 143 | "version": "3.10.12" 144 | }, 145 | "orig_nbformat": 4 146 | }, 147 | "nbformat": 4, 148 | "nbformat_minor": 2 149 | } 150 | -------------------------------------------------------------------------------- /python型別提示/images/pic04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/python型別提示/images/pic04.png -------------------------------------------------------------------------------- /python型別提示/images/pic05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/python型別提示/images/pic05.png -------------------------------------------------------------------------------- /python型別提示/images/pic06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/python型別提示/images/pic06.png -------------------------------------------------------------------------------- /python型別提示/images/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/python型別提示/images/pic1.png -------------------------------------------------------------------------------- /python型別提示/images/pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/python型別提示/images/pic2.png -------------------------------------------------------------------------------- /python型別提示/images/pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/python型別提示/images/pic3.png -------------------------------------------------------------------------------- /python基礎與資料輸出/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/python基礎與資料輸出/.DS_Store -------------------------------------------------------------------------------- /python基礎與資料輸出/images/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/python基礎與資料輸出/images/pic1.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | requests 2 | pydantic 3 | -------------------------------------------------------------------------------- /sqlalchemy_orm/README.md: -------------------------------------------------------------------------------- 1 | # SQLAlchemy ORM 2 | - [官方說明書](https://docs.sqlalchemy.org/en/14/orm/quickstart.html) 3 | - python 物件導向方法操控資料庫 4 | - 使用python程式操控SQL Database 5 | - 可建立,讀取,寫入,更新,刪除的運算 6 | - 建立class 代表建立table 7 | - 建立class Attributes 代表table的欄位 8 | 9 | ### 建立一個學生資料表(student) 10 | - id 欄位 11 | - name 欄位 12 | - age 欄位 13 | - grade 欄位 14 | 15 | ```python 16 | class Student(Base): 17 | __tablename__ = 'student' 18 | id = Column(Integer,primary_key=True) 19 | name = Column(String(50)) 20 | age = Column(Integer) 21 | grade = Columns(String(50)) 22 | ``` 23 | 24 | ### 安裝sqlalchemy 25 | 26 | ```python 27 | $ pip install sqlalchemy 28 | ``` 29 | 30 | ### 建立資料表流程 31 | - 建立engine 32 | - 建立session 33 | - 建立table 34 | - 建立Migrate 35 | 36 | #### 操控不同資料庫連結語法 37 | - [官方語法](https://docs.sqlalchemy.org/en/14/core/engines.html#backend-specific-urls) 38 | 39 | ```python 40 | from sqlalchemy import create_engine,Column,Integer,String 41 | from sqlalchemy.orm import sessionmaker 42 | from sqlalchemy.ext.declarative import declarative_base 43 | 44 | #建立engine 45 | engine = create_engine('sqlite:///student.db',echo=True, future=True) 46 | 47 | #建立session 48 | Session = sessionmaker(bind=engine) 49 | session = Session() 50 | 51 | #建立要繼承的base 52 | Base = declarative_base() 53 | 54 | #建立自訂表格的class 55 | class Student(Base): 56 | __tablename__ = 'student' 57 | 58 | id = Column(Integer,primary_key=True) 59 | name = Column(String(50)) 60 | age = Column(Integer) 61 | grade = Column(String(50)) 62 | 63 | #執行matadata內資訊,table的建立(Migrate) 64 | Base.metadata.create_all(engine) 65 | 66 | ``` 67 | 68 | ## Insert Data 69 | - 建立table class的實體 70 | - 將資料加入至session內 71 | - commit 72 | 73 | ```python 74 | student1 = Student(name="Jerin", age=27, grade="Fifth") 75 | session.add(student1) 76 | 77 | student2 = Student(name="Anita", age=24, grade="Fourth") 78 | student3 = Student(name="Jefin", age=21, grade="Third") 79 | session.add_all([student2, student3]) 80 | session.commit() 81 | ``` 82 | 83 | ## Read Data 84 | - 取得表格內所有資料 85 | - 排序所有資料 86 | - 過濾資料 87 | - 計算資料筆數 88 | 89 | ```python 90 | #get all data 91 | students = session.query(Student) 92 | 93 | for student in students: 94 | print(student.name, student.age, student.grade) 95 | 96 | #結果:====================== 97 | Jerin 27 Fifth 98 | Anita 24 Fourth 99 | Jefin 21 Third 100 | 101 | #get data in order 102 | students = session.query(Student).order_by(Student.name) 103 | for student in students: 104 | print(student.name, student.age, student.grade) 105 | 106 | #結果:====================== 107 | Anita 24 Fourth 108 | Jefin 21 Third 109 | Jerin 27 Fifth 110 | 111 | #get data by filtering 112 | 113 | student = session.query(Student).filter(Student.name=="Jerin").first() 114 | print(student.name, student.age, student.grade) 115 | 116 | #結果:========================= 117 | Jerin 27 Fifth 118 | 119 | from sqlalchemy import or_ 120 | 121 | students = session.query(Student).filter(or_(Student.name=="Jerin",Student.name=="Anita")) 122 | for student in students: 123 | print(student.name, student.age, student.grade) 124 | 125 | #結果:======================= 126 | Jerin 27 Fifth 127 | Anita 24 Fourth 128 | 129 | #count the number of results 130 | students_count = session.query(Student).filter(or_(Student.name=="Jerin",Student.name=="Anita")).count() 131 | 132 | print(students_count) 133 | 134 | #結果:======================= 135 | 2 136 | 137 | ``` 138 | 139 | ## Update Data 140 | - 取得Record 141 | - 改變資料 142 | - commit 改變的資料 143 | 144 | ```python 145 | student = session.query(Student).filter(Student.name == 'Jerin').first() 146 | student.name = "Kevin" 147 | session.commit() 148 | 149 | student = session.query(Student).filter(Student.name == 'Kevin').first() 150 | print(student.name) 151 | 152 | #結果:======================= 153 | Kevin 154 | ``` 155 | 156 | ## Delete Data 157 | - 取得Record 158 | - 刪除資料 159 | - commit 刪除的資料 160 | 161 | ```python 162 | student = session.query(Student).filter(Student.name=="Kevin").first() 163 | session.delete(student) 164 | session.commit() 165 | ``` 166 | -------------------------------------------------------------------------------- /sqlalchemy_orm/student.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/sqlalchemy_orm/student.db -------------------------------------------------------------------------------- /vscode設定/README.md: -------------------------------------------------------------------------------- 1 | ## vscode 基本設定 和 git的基本設定 2 | 3 | ### vscode設定 4 | 1. #### 中文版 5 | 2. #### 自動存檔 6 | 3. #### 使用雲端登入至github 7 | 4. #### 終端機預設為Git bash 8 | 5. #### 安裝jupyter notebook 9 | 6. #### 安裝github codespace 10 | 11 | ### codespace設定 - 開發環境的設定 12 | 1. #### 建立devcontainer.json(要求建立python的開發環境) 13 | 2. #### 啟動開發環境(rebuilt)->可以想像成重新灌作業系統 14 | 15 | ### git設定 16 | ``` 17 | git config --global user.name "roberthsu" 18 | git config --global user.email "roberthsu2003@gmail.com" 19 | git config --global pull.rebase false 20 | git config --global credential.name "github的帳號" 21 | ``` 22 | 23 | ### git上傳流程 24 | 25 | - #### 變更 -> 暫存的變更 -> 建立有名稱的提交 -> 同步 26 | - #### working tree -> stage -> commit -> push 27 | 28 | ### git強制同步上傳目前的所有提交(當不知如何處理時) 29 | 30 | ``` 31 | git push --force 32 | ``` 33 | 34 | ### git conflic(檔案衝突) 35 | 36 | 1. #### 先修改衝突檔 37 | 2. #### 重新建立commit 38 | 3. #### 同步 -------------------------------------------------------------------------------- /上課用目錄/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/上課用目錄/.DS_Store -------------------------------------------------------------------------------- /使用Dock容器開發/README.md: -------------------------------------------------------------------------------- 1 | # Docker安裝python_conda_git開發環境 2 | - 電腦必需有安裝Docker Desktop 3 | 4 | ## 方法1:使用Docker Hub Repository 5 | - 使用以下的repository 6 | 7 | `continuumio/miniconda3` 8 | 9 | ### 步驟1 **下載repository** 10 | 11 | ``` 12 | docker pull continuumio/miniconda3 13 | ``` 14 | 15 | ### 步驟2 **建立容器** 16 | - 請不要直接使用Docker Desktop直接啟動(因為容器啟動後會直接關閉) 17 | - 使用以下指令,建立容器,並且要求可互動,和配置一個偽TTY(容器啟動後不會自動關閉) 18 | 19 | ```bash 20 | docker run -it --name python-miniconda continuumio/miniconda3 21 | 22 | #-it 要求可互動,和配置一個偽TTY 23 | #--name python-miniconda 建立容器名稱 24 | #continuumio/miniconda3 映像名稱(一定在最後面) 25 | ``` 26 | 27 | ### 步驟3 **使用VSCode Docker容器開發工具** 28 | - Docker 29 | - Dev container 30 | ### 步驟4 **下載github專案** 31 | ### 步驟5 **安裝VSCode套件** 32 | - python 33 | - jupyter 34 | ### 步驟6 **安裝python外部套件** 35 | -------------------------------------------------------------------------------- /函式和comprehension/callByReference.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | 3 | ''' 4 | #Name: callByReference.py 5 | #callByReference 6 | ''' 7 | 8 | def turbo(speed): 9 | print(id(speed)) 10 | print('加速前速度:',speed[0]) 11 | speed[0] += 10 12 | 13 | if __name__ == '__main__': 14 | speed = list() 15 | print(id(speed)) 16 | startSpeed = int(input('請輸入初始速度:')) 17 | speed.append(startSpeed) 18 | turbo(speed) 19 | print('加速後的速度:',speed[0]) 20 | 21 | -------------------------------------------------------------------------------- /函式和comprehension/callByValue1.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | ''' 3 | # Name : callByValue1.py 4 | #callByValue 5 | ''' 6 | 7 | def turbo(speed): 8 | print('加速前速度:',speed) 9 | speed += 10 10 | return speed 11 | 12 | if __name__ == '__main__': 13 | speed = int(input('請輸入初始速度:')) 14 | speed = turbo(speed) 15 | print('加速後的速度:',speed) 16 | 17 | -------------------------------------------------------------------------------- /函式和comprehension/function1.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | ''' 3 | #============================================================================ 4 | # Name : function1.py 5 | #定義函式,顯示「歡迎光臨」。 6 | #============================================================================ 7 | ''' 8 | 9 | def sayHello(): 10 | print("歡迎光臨") 11 | 12 | if __name__ == '__main__': 13 | sayHello() -------------------------------------------------------------------------------- /函式和comprehension/function2.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | ''' 3 | #Name : function2.py 4 | #輸入攝氏溫度,求華氏溫度 5 | #============================= 6 | 7 | 攝氏10度轉華氏溫度=50 8 | #========================== 9 | 請輸入攝氏溫度:19 10 | 華氏溫度=66.2 11 | 12 | #=============================== 13 | 14 | ''' 15 | def temperature(value): 16 | return 1.8 * value + 32 17 | 18 | 19 | 20 | if __name__ == '__main__': 21 | print('攝氏10度轉華氏溫度=',temperature(10)) 22 | print('------------------') 23 | value = int(input('請輸入攝氏溫度:')) 24 | result = temperature(value) 25 | print('華氏溫度=',result) 26 | -------------------------------------------------------------------------------- /函式和comprehension/function3.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | 3 | ''' 4 | #Name : function3.py 5 | #輸入攝氏溫度,求華氏溫度 6 | #function 的原型宣告 7 | #加上do...while() 8 | 9 | #============================= 10 | 11 | 攝氏10度轉華氏溫度=50 12 | #========================== 13 | 請輸入攝氏溫度:20 14 | 華氏溫度=68 15 | 程式還要繼續嗎?(輸入N....結束):h 16 | 請輸入攝氏溫度:40 17 | 華氏溫度=104 18 | 程式還要繼續嗎?(輸入N....結束):a 19 | 請輸入攝氏溫度:10 20 | 華氏溫度=50 21 | 程式還要繼續嗎?(輸入N....結束):N 22 | 程式結束 23 | 24 | #=============================== 25 | 26 | ''' 27 | 28 | def temperature(value): 29 | return 1.8 * value + 32 30 | 31 | 32 | 33 | if __name__ == '__main__': 34 | runAgain = True; 35 | print('攝氏10度轉華氏溫度=',temperature(10)) 36 | print('------------------') 37 | while(runAgain): 38 | value = int(input('請輸入攝氏溫度:')) 39 | result = temperature(value) 40 | print('華氏溫度=', result) 41 | inputValue = input('程式還要繼續嗎?(輸入N...結束):') 42 | if inputValue == 'N': 43 | runAgain = False 44 | else: 45 | runAgain = True 46 | 47 | 48 | -------------------------------------------------------------------------------- /函式和comprehension/return1.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3.8 2 | ''' 3 | #Name : return1.py 4 | #自鍵盤輸入一個數字n,顯示1...n。 5 | #============================= 6 | 7 | 請輸入數字 n:10 8 | 1 2 3 4 5 6 7 8 9 10 9 | 10 | #=============================== 11 | ''' 12 | 13 | def showNum(n): 14 | i = 1; 15 | while(True): 16 | if(i > n): 17 | return() 18 | 19 | print(i,end=' ') 20 | i += 1 21 | 22 | if __name__ == '__main__': 23 | inputNum = int(input('請輸入數字 n:')) 24 | showNum(inputNum); 25 | print() -------------------------------------------------------------------------------- /函式和comprehension/test.py: -------------------------------------------------------------------------------- 1 | animal = 'fruitbat' 2 | def print_global(): 3 | print('inside print_global:', animal) 4 | 5 | 6 | 7 | def change_and_print_global(): 8 | print('inside change_and_print_global:', animal) 9 | animal = 'wombat' 10 | print('after the change:', animal) 11 | 12 | print('at the top level:', animal) 13 | print_global() 14 | 15 | change_and_print_global() -------------------------------------------------------------------------------- /國發會驗收/README.md: -------------------------------------------------------------------------------- 1 | # python(人門) 2 | 3 | 4 | ``` 5 | 1以下程式碼,執行時輸出值為何? 6 | 7 | lst_1 = [1, 2] 8 | lst_2 = [3, 4] 9 | lst_3 = lst_1 + lst_2 10 | lst_4 = lst_3 * 2 11 | print(lst_4) 12 | 13 | ① [8, 12] 14 | ② [[1, 2], [3, 4], [1, 2], [3, 4]] 15 | ③ [1, 2, 3, 4, 1, 2, 3, 4] 16 | ④ [[1, 2, 3, 4], [1, 2, 3, 4]] 17 | 18 | ``` 19 | 20 | ``` 21 | 2以下是計算跑步平均時速的程式碼,輸出結果要盡可能精準。 22 | 請問A、B處的程式碼應該為何? 23 | 24 | distance = ____A_____(input('請輸入距離(單位:公尺):')) 25 | time =_____B_____ (input('請輸入時間(單位:秒)')) 26 | avg = (distance / 1000) / (time / 3600) 27 | print('平均時速 = ', avg, ' 公里/小時') 28 | 29 | A: ① int ② string ③ float ④ bool 30 | B: ① int ② float ③ string ④ bool 31 | 32 | 33 | ``` 34 | 35 | ``` 36 | 3已知商店營業額(total)和顧客人數(num),要顯示顧客的平均消費金額,輸出時必須去除小數部分,請問下列哪兩個程式碼正確? 37 | 38 | ① avg = total / num 39 | ② avg = int(total / num) 40 | ③ avg = float(total // num) 41 | ④ avg = total // num 42 | 43 | 44 | ``` 45 | 46 | ``` 47 | 4列各種資料,其正確資料型別為何?請填入下列型別 bool、float、int、str 48 | 49 | A: _______height = 172 50 | B: _______pass1 = True 51 | C: _______name = "張無忌" 52 | D: _______score = 98.0 53 | E: _______tel = '0928000000' 54 | 55 | 56 | ``` 57 | 58 | ``` 59 | 5下列是年齡計算程式,請問程式中變數的資料型別為何?請填入下列型別 bool、float、int、str: 60 | 61 | 01 born = input("請輸入出生的民國年: ") 62 | 02 year = input("請輸入現在的民國年: ") 63 | 03 age = eval(year) - eval(born) 64 | 04 msg = "你的年齡是: " + str(age) 65 | 05 print(msg) 66 | 67 | A: 在 01 行中 born 的資料型別為何? 68 | B: 在 03 行中 age 的資料型別為何? 69 | C: 在 04 行中 msg 的資料型別為何? 70 | 71 | 72 | ``` 73 | 74 | ``` 75 | 6下列程式碼執行後,變數的資料型別是否正確,請填入 是 、 否。 76 | 77 | 01 x1 = '5' 78 | 02 y1 = 4 79 | 03 a = x1 * y1 80 | 04 x2, y2 = 6, 3 
05 b = x2 / y2 81 | 06 x3, y3 = 1.0, 2 82 | 07 c = x3 + y3 83 | 84 | A:_________變數 a 的資料類型為 str。 85 | B:_________變數 b 的資料類型是 float。 86 | C:_________變數 c 的資料類型為 int。 87 | 88 | 89 | ``` 90 | 91 | 92 | ``` 93 | 7下列常值請用bool、float、int、str填入正確的資料型別: 94 | 95 | A:______type(+5E10) 96 | B:______type(4.0) 97 | C:______type("False") 98 | D:______type(True) 99 | 100 | 101 | ``` 102 | 103 | ``` 104 | 8下列程式碼是用來以座號查詢學生姓名,但執行結果並不正確,請回答下列問題,來找出可能的錯誤。 105 | 106 | 01 datas = {1: '張三', 2: '李四', 3: '王五'} 107 | 02 num = input('請輸入座號: ') 108 | 03 if not num in datas: 109 | 04 print('該座號不存在!') 110 | 05 else: 111 | 06 print("學生姓名為: " + datas[num]) 112 | 113 | A:第01 行敘述的datas 字典中,儲存哪兩種資料類型? 114 | ① string、bool ② float、string ③ int、string ④ int、float 115 | 116 | B:第 02 行敘述的 num 變數的資料型別為何? 117 | ① bool ② float ③ int ④ string 118 | 119 | C:第 03 行敘述執行時,為何在 datas 字典中找不到資料? 
① 程式邏輯錯誤 ② 資料型別不匹配 ③ 變數名稱誤用保留字 ④ 語法不正確 120 | 121 | 122 | ``` 123 | 124 | ``` 125 | 9下列是用來查詢傳入值資料型別的函式,請根據執行結果回答下列問題 126 | 127 | 01 def dataType(val): 128 | 02 return type(val) 129 | 03 print(dataType(False)) 130 | 04 print(dataType(3.0)) 131 | 05 print(dataType(3)) 132 | 06 print(dataType("False")) 133 | 134 | A:第03 行敘述的執行結果為何? 135 | ① 136 | 137 | B:第04 行敘述的執行結果為何? 138 | ① 139 | 140 | C:第05 行敘述的執行結果為何? 141 | ① 142 | 143 | D:第06 行敘述的執行結果為何? 144 | ① 145 | 146 | ``` 147 | 148 | ``` 149 | 10讓使用者輸入一個整數值,但即使輸入小數也能轉換為整數,請問下列哪個敘述符合要求? 150 | 151 | ① num = input("請輸入整數:") 152 | ② num = int((input("請輸入整數:")) 153 | ③ num = float(input("請輸入整數:")) 154 | ④ num = str(input("請輸入整數:")) 155 | 156 | ``` 157 | 158 | -------------------------------------------------------------------------------- /國發會驗收/README解答.md: -------------------------------------------------------------------------------- 1 | # python(人門) 2 | 3 | 4 | ``` 5 | 1以下程式碼,執行時輸出值為何? 6 | 7 | lst_1 = [1, 2] 8 | lst_2 = [3, 4] 9 | lst_3 = lst_1 + lst_2 10 | lst_4 = lst_3 * 2 11 | print(lst_4) 12 | 13 | ① [8, 12] 14 | ② [[1, 2], [3, 4], [1, 2], [3, 4]] 15 | ③ [1, 2, 3, 4, 1, 2, 3, 4] 16 | ④ [[1, 2, 3, 4], [1, 2, 3, 4]] 17 | -------------------------------- 18 | ③ 19 | ``` 20 | 21 | ``` 22 | 2以下是計算跑步平均時速的程式碼,輸出結果要盡可能精準。 23 | 請問A、B處的程式碼應該為何? 24 | 25 | distance = ____A_____(input('請輸入距離(單位:公尺):')) 26 | time =_____B_____ (input('請輸入時間(單位:秒)')) 27 | avg = (distance / 1000) / (time / 3600) 28 | print('平均時速 = ', avg, ' 公里/小時') 29 | 30 | A: ① int ② string ③ float ④ bool 31 | B: ① int ② float ③ string ④ bool 32 | 33 | --------------------------- 34 | A:③ 35 | B:② 36 | ``` 37 | 38 | ``` 39 | 3已知商店營業額(total)和顧客人數(num),要顯示顧客的平均消費金額,輸出時必須去除小數部分,請問下列哪兩個程式碼正確? 40 | 41 | ① avg = total / num 42 | ② avg = int(total / num) 43 | ③ avg = float(total // num) 44 | ④ avg = total // num 45 | 46 | ------------------------------- 47 | ② 48 | ④ 49 | ``` 50 | 51 | ``` 52 | 4列各種資料,其正確資料型別為何?請填入下列型別 bool、float、int、str 53 | 54 | A: _______height = 172 55 | B: _______pass1 = True 56 | C: _______name = "張無忌" 57 | D: _______score = 98.0 58 | E: _______tel = '0928000000' 59 | 60 | -------------------------- 61 | A:int 62 | B:bool 63 | C:str 64 | D:float 65 | E:str 66 | ``` 67 | 68 | ``` 69 | 5下列是年齡計算程式,請問程式中變數的資料型別為何?請填入下列型別 bool、float、int、str: 70 | 71 | 01 born = input("請輸入出生的民國年: ") 72 | 02 year = input("請輸入現在的民國年: ") 73 | 03 age = eval(year) - eval(born) 74 | 04 msg = "你的年齡是: " + str(age) 75 | 05 print(msg) 76 | 77 | A: 在 01 行中 born 的資料型別為何? 78 | B: 在 03 行中 age 的資料型別為何? 79 | C: 在 04 行中 msg 的資料型別為何? 80 | 81 | --------------------------- 82 | A:str 83 | B:int 84 | C:str 85 | ``` 86 | 87 | ``` 88 | 6下列程式碼執行後,變數的資料型別是否正確,請填入 是 、 否。 89 | 90 | 01 x1 = '5' 91 | 02 y1 = 4 92 | 03 a = x1 * y1 93 | 04 x2, y2 = 6, 3 
05 b = x2 / y2 94 | 06 x3, y3 = 1.0, 2 95 | 07 c = x3 + y3 96 | 97 | A:_________變數 a 的資料類型為 str。 98 | B:_________變數 b 的資料類型是 float。 99 | C:_________變數 c 的資料類型為 int。 100 | 101 | ---------------------- 102 | A:是 103 | B:是 104 | C:否 105 | ``` 106 | 107 | 108 | ``` 109 | 7下列常值請用bool、float、int、str填入正確的資料型別: 110 | 111 | A:______type(+5E10) 112 | B:______type(4.0) 113 | C:______type("False") 114 | D:______type(True) 115 | 116 | ----------------------------- 117 | A:float 118 | B:float 119 | C:str 120 | D:bool 121 | ``` 122 | 123 | ``` 124 | 8下列程式碼是用來以座號查詢學生姓名,但執行結果並不正確,請回答下列問題,來找出可能的錯誤。 125 | 126 | 01 datas = {1: '張三', 2: '李四', 3: '王五'} 127 | 02 num = input('請輸入座號: ') 128 | 03 if not num in datas: 129 | 04 print('該座號不存在!') 130 | 05 else: 131 | 06 print("學生姓名為: " + datas[num]) 132 | 133 | A:第01 行敘述的datas 字典中,儲存哪兩種資料類型? 134 | ① string、bool ② float、string ③ int、string ④ int、float 135 | 136 | B:第 02 行敘述的 num 變數的資料型別為何? 137 | ① bool ② float ③ int ④ string 138 | 139 | C:第 03 行敘述執行時,為何在 datas 字典中找不到資料? 
① 程式邏輯錯誤 ② 資料型別不匹配 ③ 變數名稱誤用保留字 ④ 語法不正確 140 | 141 | ---------------------------- 142 | A:③ 143 | B:④ 144 | C:② 145 | ``` 146 | 147 | ``` 148 | 9下列是用來查詢傳入值資料型別的函式,請根據執行結果回答下列問題 149 | 150 | 01 def dataType(val): 151 | 02 return type(val) 152 | 03 print(dataType(False)) 153 | 04 print(dataType(3.0)) 154 | 05 print(dataType(3)) 155 | 06 print(dataType("False")) 156 | 157 | A:第03 行敘述的執行結果為何? 158 | ① 159 | 160 | B:第04 行敘述的執行結果為何? 161 | ① 162 | 163 | C:第05 行敘述的執行結果為何? 164 | ① 165 | 166 | D:第06 行敘述的執行結果為何? 167 | ① 168 | 169 | --------------------------- 170 | A:① 171 | B:② 172 | C:③ 173 | D:④ 174 | ``` 175 | 176 | ``` 177 | 10讓使用者輸入一個整數值,但即使輸入小數也能轉換為整數,請問下列哪個敘述符合要求? 178 | 179 | ① num = input("請輸入整數:") 180 | ② num = int((input("請輸入整數:")) 181 | ③ num = float(input("請輸入整數:")) 182 | ④ num = str(input("請輸入整數:")) 183 | 184 | ------------------------------- 185 | ② 186 | ``` 187 | 188 | -------------------------------------------------------------------------------- /字串處理/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/字串處理/.DS_Store -------------------------------------------------------------------------------- /字串處理/email.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | ''' 4 | #email.py 5 | # r'^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z]+$' 6 | 請輸入多筆email:bogusemail123@sillymail.com, robert@gmail.com ,,,roberthsu2003@gmail.com 7 | 取出的email有: 8 | bogusemail123@sillymail.com 9 | robert@gmail.com 10 | roberthsu2003@gmail.com 11 | ''' 12 | 13 | import re 14 | emails = input('請輸入多筆email:') 15 | print(emails) 16 | getEmails = re.findall(r'\w+[.|\w]\w+@\w+[.]\w+[.|\w+]\w+',emails) 17 | print('取出的email有:') 18 | for email in getEmails: 19 | print(email) 20 | 21 | -------------------------------------------------------------------------------- /字串處理/taiwanId.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | """ 4 | #taiwanId.py 5 | #r'^[A-Z]\d{9}$' 6 | #驗證身份證字號 7 | 請輸入身份證字號:A12345678 8 | A12345678有誤 9 | 10 | 請輸入身份證字號:A123456789 11 | A123456789正確 12 | """ 13 | import re 14 | 15 | taiwanId = input('請輸入身份證字號:') 16 | mobj = re.match(r'^[A-Z]\d{9}$',taiwanId,re.I) 17 | if(mobj): 18 | print(taiwanId,"正確") 19 | else: 20 | print(taiwanId, "有誤") 21 | 22 | 23 | -------------------------------------------------------------------------------- /字串處理/wordLink.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | """ 4 | 字串文字接龍 5 | """ 6 | print('失敗就會退出遊戲!') 7 | inputString = input('請輸入一個接龍字串:') 8 | sampleString = inputString 9 | for single in sampleString: 10 | print('上一個字串是:',inputString) 11 | outputWords = "請輸入-",single,"-開始的字串" 12 | keyin = input(outputWords) 13 | if keyin[0] != single: 14 | print('遊戲失敗') 15 | print('您輸入的字串是:',inputString) 16 | break 17 | inputString += '-' + keyin 18 | else: 19 | print('恭喜!成功完成遊戲') 20 | print('您輸入的字串是:',inputString) 21 | -------------------------------------------------------------------------------- /學習prompt/README.md: -------------------------------------------------------------------------------- 1 | # Python 語言學習prompt 2 | ### Python 語言學習課表 3 | 4 | 5 | #### 第一章:Python 基礎 6 | 7 | 1. **什麼是 Python?Python 的優勢與應用** 8 | - Prompt1: "什麼是 Python?解釋其優勢和應用的具體案例。" 9 |
10 | What is Python?Explain its advantages and provide specific examples of its applications 11 |
12 | 13 | - Prompt2: "為什麼 Python 被廣泛使用?列舉它在不同領域的應用。" 14 |
15 | Why is Python widely used? List its applications in different fields. 16 |
17 | 18 | 2. **安裝與設定開發環境(Windows、Mac、Linux)** 19 | 20 | - Prompt: "如何在 [作業系統] 上安裝 Python?" 21 |
22 | How to install Python on [operating system]? 23 |
24 | 25 | - Prompt:"如何在[作業系統]上安裝mini conda?" 26 |
27 | How to install mini-conda on [operating system]? 28 |
29 | 30 | - Prompt:"如何讓mini-conda建立指定pyhton版本虛擬環境" 31 |
32 | How to create a virtual enviroment with a specified python version using mini-conda? 33 |
34 | 35 | - Prompt: "有哪些工具可以用來編寫和執行 Python 程式?" 36 | 37 |
38 | Which tools can be used to write and execute python programs? 39 |
40 | 41 | 3. **安裝Git** 42 | - Prompt:"如何在[作業系統]安裝git?" 43 |
44 | How to install git on [operating system]? 45 |
46 | 47 | - Prompt:"如何完成git的最先初始化設定?" 48 |
49 | How to complete the Git initialization settings? 50 |
51 | 52 | 4. **第一個 Python 程式:Hello, World!** 53 | 54 | - Prompt1: "如何編寫和執行第一個 Python 程式?" 55 |
56 | How to write your first Python program? 57 |
58 | 59 | - Prompt2: "Hello, World! 範例中的每個部分是做什麼的?" 60 |
61 | Hello, World! What does each part of the example do? 62 | 63 | 64 | 4. **Python 的基本語法** 65 | 66 | - **縮排與代碼風格** 67 | - Prompt1: "什麼是 Python 的縮排規則?如何正確使用?" 68 |
69 | What are Python's indentation rules?How to user it correctly? 70 |
71 | - **註解的使用** 72 | - Prompt2: "如何在 Python 中撰寫單行與多行註解?" 73 |
74 | How to write single-line and multi-line comments in Python? 75 |
76 | 77 | #### 第二章:數據類型與操作 78 | 79 | 1. **數字與運算符** 80 | - Prompt1: "Python 中有哪些常用的運算符?" 81 |
82 | What are some common operators used in Python? 83 |
84 | - Prompt2: "python運算符的優先順序?" 85 |
86 | Prioritize python operators? 87 |
88 | - Prompt3: "如何從用戶輸入獲取數據並進行處理?" 89 |
90 | How to get data from user input and process it? 91 |
92 | 2. **字符串與基本操作** 93 | - Prompt1: "python如何創建和操作字串?" 94 |
95 | How dose python create and manipulate strings? 96 |
97 | - Prompt2: "什麼是python的字串切片,如何使用?" 98 |
99 | What is python string slicing and how to use it? 100 |
101 | 102 | 3. **列表、元組與集合** 103 | - Prompt1: "如何建立python list和tuple,它們不同處和如何操作?" 104 |
105 | How to create python lists and tuples, what are their differents and How do they work? 106 |
107 | - Prompt2: "python的set有哪些特點,如何操作?" 108 |
109 | What are the features of python's set and how does it work? 110 |
111 | 112 | 4. **字典的使用** 113 | - Prompt1: "如何建立和修改python's dictionary?" 114 |
115 | How to create and modify python's dictionary? 116 |
117 | - Prompt2: "什麼是python字典常見操作方法?" 118 |
119 | What are the common operations of a python's dictionary? 120 |
121 | 122 | #### 第三章:控制結構 123 | 124 | 1. **條件語句:if、elif、else** 125 | - Prompt1: "如何正確編寫python的條件語句?" 126 |
127 | How to write python conditional statements correctly? 128 |
129 | - Prompt2: "有哪些最佳實踐來增強條件語句的可讀性?" 130 |
131 | What are some best practices to enhance the readability of python conditional statements? 132 |
133 | 2. **迴圈結構:for、while** 134 | - Prompt1: "如何選擇使用 for 迴圈或 while 迴圈?" 135 | - Prompt2: "如何正確退出迴圈?" 136 | 3. **迴圈控制語句:break、continue、pass** 137 | - Prompt1: "什麼時候使用 break 和 continue?" 138 | - Prompt2: "pass 語句的作用是什麼,適用於哪些場景?" 139 | 140 | #### 第四章:函數與模塊 141 | 142 | 1. **定義與調用函數** 143 | - Prompt1: "如何定義一個帶有參數的函數?" 144 | - Prompt2: "如何調用其他模塊中的函數?" 145 | 2. **參數與返回值** 146 | - Prompt1: "什麼是位置參數和關鍵字參數?" 147 | - Prompt2: "如何使用返回值來儲存函數結果?" 148 | 3. **匿名函數(lambda 函數)** 149 | - Prompt1: "什麼是 lambda 函數,如何使用?" 150 | - Prompt2: "有哪些場景適合使用匿名函數?" 151 | 4. **模塊與庫的導入** 152 | - Prompt1: "如何導入 Python 的內建模塊?" 153 | - Prompt2: "如何創建自定義模塊?" 154 | 5. **常用標準庫介紹(如 math、datetime)** 155 | - Prompt1: "math 和 datetime 庫的常見功能是什麼?" 156 | - Prompt2: "列舉幾個實用的標準庫並解釋其用途。" 157 | 158 | #### 第五章:文件操作 159 | 160 | 1. **文件的讀取與寫入** 161 | - Prompt1: "如何讀取和寫入文本文件?" 162 | - Prompt2: "有哪些方式可以處理大文件?" 163 | 2. **文件指標與模式** 164 | - Prompt1: "什麼是文件模式,如何選擇合適的模式?" 165 | - Prompt2: "如何操作文件指標?" 166 | 3. **異常處理與錯誤管理** 167 | - Prompt1: "如何處理文件操作中的異常?" 168 | - Prompt2: "有哪些常見的錯誤管理策略?" 169 | 170 | #### 第六章:面向對象編程 171 | 172 | 1. **類與對象的概念** 173 | - Prompt1: "什麼是類和對象,如何定義它們?" 174 | - Prompt2: "如何使用 Python 的 class 關鍵字?" 175 | 2. **定義類與屬性、方法** 176 | - Prompt1: "如何為類添加屬性和方法?" 177 | - Prompt2: "什麼是實例方法與類方法的區別?" 178 | 3. **繼承與多態** 179 | - Prompt1: "如何實現類的繼承?" 180 | - Prompt2: "如何運用多態性來設計靈活的程式?" 181 | 4. **魔術方法與特殊功能** 182 | - Prompt1: "列舉幾個常見的魔術方法並解釋其作用。" 183 | - Prompt2: "如何實現運算符重載?" 184 | 185 | #### 第七章:進階主題 186 | 187 | 1. **Python 的內建函數與高階函數** 188 | - Prompt1: "列舉幾個常見內建函數並舉例說明。" 189 | - Prompt2: "什麼是 map、filter 和 reduce,如何使用?" 190 | 2. **生成器與迭代器** 191 | - Prompt1: "如何創建生成器?" 192 | - Prompt2: "什麼是迭代器協議,如何實現?" 193 | 3. **裝飾器的使用** 194 | - Prompt1: "如何編寫一個簡單的裝飾器?" 195 | - Prompt2: "有哪些場景適合使用裝飾器?" 196 | 4. **異步編程簡介** 197 | - Prompt1: "什麼是異步編程,如何在 Python 中使用?" 198 | - Prompt2: "async 和 await 關鍵字的作用是什麼?" 199 | 200 | #### 第八章:專案與實踐 201 | 202 | 1. **簡單專案練習(如計算器、密碼生成器)** 203 | - Prompt1: "如何設計一個基本的計算器程式?" 204 | - Prompt2: "如何生成一個隨機密碼生成器?" 205 | 2. **數據處理與可視化(Pandas、Matplotlib)** 206 | - Prompt1: "如何用 Pandas 處理數據表?" 207 | - Prompt2: "如何用 Matplotlib 繪製折線圖?" 208 | 3. **Web 開發入門(Flask 或 Django)** 209 | - Prompt1: "如何建立一個簡單的 Flask 網站?" 210 | - Prompt2: "Django 的基本架構是什麼?" 211 | 4. **進階專案:自選實踐項目** 212 | - Prompt1: "如何選擇合適的專案進行實踐?" 213 | - Prompt2: "如何將已學知識整合到專案中?" 214 | 215 | -------------------------------------------------------------------------------- /小程式/images/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/小程式/images/pic1.png -------------------------------------------------------------------------------- /小程式/images/pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/小程式/images/pic2.png -------------------------------------------------------------------------------- /數值計算與資料輸入/bmi.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 請依據 BMI 值分析他人的身體狀況。 4 | BMI值 < 18.5 18.5-25 25-30 >30 5 | 身體狀態 太輕 正常 過重 肥胖 6 | ''' 7 | 8 | height = float(input('請輸入身高,單位為公分:')) 9 | weight = float(input('請輸入體重,單位為公斤:')) 10 | bmi = weight / ((height/100) ** 2) 11 | 12 | if bmi < 18.5: 13 | state = '太輕' 14 | elif bmi <= 25: 15 | state = '正常' 16 | elif bmi <= 30: 17 | state = '過重' 18 | else: 19 | state = '肥胖' 20 | 21 | print('您的BMI是',bmi) 22 | print('「您的體重',state,'」') 23 | -------------------------------------------------------------------------------- /數值計算與資料輸入/circle_s.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 讓使用者輸入梯形的上底、下底及高,程式會計算梯形的面積(上底加下底乘以高除以2) 4 | ''' 5 | 6 | PI = 3.14159 7 | radius = float(input('請輸入圓柱體的半徑(公分):')) 8 | height = float(input('請輸入圓柱體的高(公分):')) 9 | area = radius ** 2 * PI * height 10 | print('圓柱體的體積:',area,'立方公分') -------------------------------------------------------------------------------- /數值計算與資料輸入/complex.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | ''' 4 | 請使用者輸入一個任意數,程式會顯示此數的平方值及立方值 5 | ''' 6 | 7 | num = float(input('請輸入任意數:')) 8 | result = num ** 2 9 | print('此數的平方是:',result) 10 | result = num ** 3 11 | print('此數的立方是:',result) -------------------------------------------------------------------------------- /數值計算與資料輸入/complex_s.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 請以(複合指定運算子)設計程式,讓用者輸入三個任意數,程式會顯示3數相加的總和(float) 4 | ''' 5 | sum = 0 6 | x = float(input('請輸入第一個數:')) 7 | sum += x 8 | x = float(input('請輸入第二個數:')) 9 | sum += x 10 | x = float(input('請輸入第三個數:')) 11 | sum += x 12 | print('三個數的總和為:',sum) -------------------------------------------------------------------------------- /數值計算與資料輸入/discount.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | ''' 4 | 請使用者輸入一個任意數,程式會顯示此數的平方值及立方值 5 | ''' 6 | money = int(input("請輸入購買金額:")) 7 | if money >= 100000: 8 | payMoney = money * 0.8 9 | elif money >= 50000: 10 | payMoney = money * 0.85 11 | elif money >= 30000: 12 | payMoney = money * 0.9 13 | elif money >= 10000: 14 | payMoney = money * 0.95 15 | else: 16 | payMoney = money 17 | 18 | print('實付金額是:', payMoney, '元') 19 | -------------------------------------------------------------------------------- /數值計算與資料輸入/images/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/數值計算與資料輸入/images/pic1.png -------------------------------------------------------------------------------- /數值計算與資料輸入/ladder.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 讓使用者輸入梯形的上底、下底及高,程式會計算梯形的面積(上底加下底乘以高除以2) 4 | ''' 5 | 6 | top = float(input('請輸入梯形的上底(公分):')) 7 | bottom = float(input('請輸入梯形的下底(公分):')) 8 | height = float(input('請輸入梯形的高(公分):')) 9 | area = (top + bottom) * height / 2 10 | print('梯形的面積:',area,'平方公分') -------------------------------------------------------------------------------- /數值計算與資料輸入/mathop.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 讓使用者輸入被除數(整數)及除數(整數,不可以是零) 4 | 程式會顯示兩數相除的商及餘數 5 | ''' 6 | 7 | n = int(input('請輸入被除數(整數):')) 8 | m = int(input('請輸入除數(整數,不可以為0):')) 9 | print('商',n//m,'餘數:',n%m) 10 | -------------------------------------------------------------------------------- /數值計算與資料輸入/password.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 請依據 BMI 值分析他人的身體狀況。 4 | - 讓使用者輸入密碼,如果輸入的密碼正確(1234), 要顯示「密碼正確!歡迎光臨!」。 5 | - 如果不正確就顯示密碼錯誤訊息 6 | ''' 7 | 8 | password = input('請輸入密碼:') 9 | if password == "1234": 10 | print('密碼正確!歡迎光臨!') 11 | else: 12 | print('密碼錯誤\n請重新輸入') -------------------------------------------------------------------------------- /數值計算與資料輸入/plus_s.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 計算使用者輸入的2個任意數,程式會顯示2數相加的總和 4 | ''' 5 | 6 | n = float(input('請輸入第一個數值:')) 7 | m = float(input('請輸入第二個數值:')) 8 | print('兩個數的和是:',n + m) -------------------------------------------------------------------------------- /條件分析/bmi.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 請依據 BMI 值分析他人的身體狀況。 4 | BMI值 < 18.5 18.5-25 25-30 >30 5 | 身體狀態 太輕 正常 過重 肥胖 6 | ''' 7 | 8 | height = float(input('請輸入身高,單位為公分:')) 9 | weight = float(input('請輸入體重,單位為公斤:')) 10 | bmi = weight / ((height/100) ** 2) 11 | 12 | if bmi < 18.5: 13 | state = '太輕' 14 | elif bmi <= 25: 15 | state = '正常' 16 | elif bmi <= 30: 17 | state = '過重' 18 | else: 19 | state = '肥胖' 20 | 21 | print('您的BMI是',bmi) 22 | print('「您的體重',state,'」') 23 | -------------------------------------------------------------------------------- /條件分析/circle_s.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 讓使用者輸入梯形的上底、下底及高,程式會計算梯形的面積(上底加下底乘以高除以2) 4 | ''' 5 | 6 | PI = 3.14159 7 | radius = float(input('請輸入圓柱體的半徑(公分):')) 8 | height = float(input('請輸入圓柱體的高(公分):')) 9 | area = radius ** 2 * PI * height 10 | print('圓柱體的體積:',area,'立方公分') -------------------------------------------------------------------------------- /條件分析/complex.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | ''' 4 | 請使用者輸入一個任意數,程式會顯示此數的平方值及立方值 5 | ''' 6 | 7 | num = float(input('請輸入任意數:')) 8 | result = num ** 2 9 | print('此數的平方是:',result) 10 | result = num ** 3 11 | print('此數的立方是:',result) -------------------------------------------------------------------------------- /條件分析/complex_s.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 請以(複合指定運算子)設計程式,讓用者輸入三個任意數,程式會顯示3數相加的總和(float) 4 | ''' 5 | sum = 0 6 | x = float(input('請輸入第一個數:')) 7 | sum += x 8 | x = float(input('請輸入第二個數:')) 9 | sum += x 10 | x = float(input('請輸入第三個數:')) 11 | sum += x 12 | print('三個數的總和為:',sum) -------------------------------------------------------------------------------- /條件分析/discount.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | ''' 4 | 輸入顧客購買金額,若金額在 5 | 100000元打8折. 6 | 50000打85折. 7 | 30000打9折. 8 | 10000打95折. 9 | ''' 10 | money = int(input("請輸入購買金額:")) 11 | if money >= 100000: 12 | payMoney = money * 0.8 13 | elif money >= 50000: 14 | payMoney = money * 0.85 15 | elif money >= 30000: 16 | payMoney = money * 0.9 17 | elif money >= 10000: 18 | payMoney = money * 0.95 19 | else: 20 | payMoney = money 21 | 22 | print('實付金額是:', payMoney, '元') 23 | -------------------------------------------------------------------------------- /條件分析/images/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/條件分析/images/pic1.png -------------------------------------------------------------------------------- /條件分析/ladder.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 讓使用者輸入梯形的上底、下底及高,程式會計算梯形的面積(上底加下底乘以高除以2) 4 | ''' 5 | 6 | top = float(input('請輸入梯形的上底(公分):')) 7 | bottom = float(input('請輸入梯形的下底(公分):')) 8 | height = float(input('請輸入梯形的高(公分):')) 9 | area = (top + bottom) * height / 2 10 | print('梯形的面積:',area,'平方公分') -------------------------------------------------------------------------------- /條件分析/mathop.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 讓使用者輸入被除數(整數)及除數(整數,不可以是零) 4 | 程式會顯示兩數相除的商及餘數 5 | ''' 6 | 7 | n = int(input('請輸入被除數(整數):')) 8 | m = int(input('請輸入除數(整數,不可以為0):')) 9 | print('商',n//m,'餘數:',n%m) 10 | -------------------------------------------------------------------------------- /條件分析/password.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 請依據 BMI 值分析他人的身體狀況。 4 | - 讓使用者輸入密碼,如果輸入的密碼正確(1234), 要顯示「密碼正確!歡迎光臨!」。 5 | - 如果不正確就顯示密碼錯誤訊息 6 | ''' 7 | 8 | password = input('請輸入密碼:') 9 | if password == "1234": 10 | print('密碼正確!歡迎光臨!') 11 | else: 12 | print('密碼錯誤\n請重新輸入') -------------------------------------------------------------------------------- /條件分析/plus_s.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 計算使用者輸入的2個任意數,程式會顯示2數相加的總和 4 | ''' 5 | 6 | n = float(input('請輸入第一個數值:')) 7 | m = float(input('請輸入第二個數值:')) 8 | print('兩個數的和是:',n + m) -------------------------------------------------------------------------------- /模組和套件/images/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/模組和套件/images/pic1.png -------------------------------------------------------------------------------- /檔案存取/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/.DS_Store -------------------------------------------------------------------------------- /檔案存取/1d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/1d.png -------------------------------------------------------------------------------- /檔案存取/2d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/2d.png -------------------------------------------------------------------------------- /檔案存取/3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/3d.png -------------------------------------------------------------------------------- /檔案存取/4d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/4d.png -------------------------------------------------------------------------------- /檔案存取/city.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/city.db -------------------------------------------------------------------------------- /檔案存取/data.json: -------------------------------------------------------------------------------- 1 | {"people": [{"name": "Scott", "website": "stackabuse.com", "from": "Nebraska"}, {"name": "Larry", "website": "google.com", "from": "Michigan"}]} -------------------------------------------------------------------------------- /檔案存取/data.txt: -------------------------------------------------------------------------------- 1 | python與中文 2 | 1. 我們來試試看中文儲存能力。 3 | 2. 許這個字會有編碼衝突風險。 4 | 3. 犇這個字必須是utf8編碼才有。 5 | -------------------------------------------------------------------------------- /檔案存取/data1.txt: -------------------------------------------------------------------------------- 1 | 菲律賓拒解除對台旅行禁令 杜特蒂稱無涉一中政策 2 | 3 | (中央社台北/馬尼拉13日綜合外電報導)菲律賓總統杜特蒂今天拒絕台灣方面的呼籲,不解除對台灣人實施的旅行禁令。杜特蒂並稱自己首要關切的是菲律賓人的安全,這項決定跟一中政策「無關」。 4 | 5 | 菲律賓本週以抑制俗稱武漢肺炎的2019年冠狀病毒疾病(COVID-19)疫情為由,對台實施旅行禁令。台灣當局已表示,若菲方不解除禁令,台灣將考慮反制措施。但杜特蒂仍決定維持禁令。 6 | 7 | 根據菲律賓總統府發言人帕內洛(Salvador Panelo),杜特蒂(Rodrigo Duterte)表示:「我首要關切的是我國人民的健康和安全。」 8 | 9 | 路透社報導,由於北京宣稱台灣是中國的一部分,世界衛生組織(WHO)處理疫情資訊時把台灣納入中國,導致若干國家對台灣人實施跟對中國人一樣的限制。 10 | 11 | 但帕內洛引述杜特蒂的話宣稱,菲律賓決定把台灣納入旅行禁令,跟一中政策「無關」。 12 | 13 | #台灣外交部發言人歐江安今天稍早表示,政府已做好周全準備,有配套方案,不排除任何可能性。 14 | 15 | 台灣現有武漢肺炎確診病例為18例,中國大陸約6萬例。台灣已多次抱怨世衛把台灣視為中國一部分的作法不公,會誤導其他國家認為台灣疫情跟中國大陸一樣嚴重。 16 | -------------------------------------------------------------------------------- /檔案存取/ex1.csv: -------------------------------------------------------------------------------- 1 | a,b,c,d,message 2 | 1,2,3,4,hello 3 | 5,6,7,8,world 4 | 9,10,11,12,foo -------------------------------------------------------------------------------- /檔案存取/ex2.csv: -------------------------------------------------------------------------------- 1 | 1,2,3,4,hello 2 | 5,6,7,8,world 3 | 9,10,11,12,foo -------------------------------------------------------------------------------- /檔案存取/ex3.csv: -------------------------------------------------------------------------------- 1 | A B C 2 | aaa -0.264438 -1.026059 -0.619500 3 | bbb 0.927272 0.302904 -0.032399 4 | ccc -0.264273 -0.386314 -0.217601 5 | ddd -0.871858 -0.348382 1.100491 -------------------------------------------------------------------------------- /檔案存取/ex4.csv: -------------------------------------------------------------------------------- 1 | # hey! 2 | a,b,c,d,message 3 | # just wanted to make things more difficult for you 4 | # who reads CSV files with computers, anyway? 5 | 1,2,3,4,hello 6 | 5,6,7,8,world 7 | 9,10,11,12,foo -------------------------------------------------------------------------------- /檔案存取/ex5.csv: -------------------------------------------------------------------------------- 1 | something,a,b,c,d,message 2 | one,1,2,3,4,NA 3 | two,5,6,,8,world 4 | three,9,10,11,12,foo -------------------------------------------------------------------------------- /檔案存取/ex7.csv: -------------------------------------------------------------------------------- 1 | "a","b","c" 2 | "1","2","3" 3 | "1","2","3" 4 | -------------------------------------------------------------------------------- /檔案存取/example.json: -------------------------------------------------------------------------------- 1 | [{"a": 1, "b": 2, "c": 3}, 2 | {"a": 4, "b": 5, "c": 6}, 3 | {"a": 7, "b": 8, "c": 9}] 4 | -------------------------------------------------------------------------------- /檔案存取/lesson11_1/class1.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/lesson11_1/class1.csv -------------------------------------------------------------------------------- /檔案存取/lesson11_1/class2.csv: -------------------------------------------------------------------------------- 1 | 姓名,科目1,科目2,科目3,科目4,科目5,科目6,科目7 2 | 吳淑惠,95,79,94,85,92,90,62 3 | 臧怡君,75,98,44,70,59,75,42 4 | 黃婷婷,92,73,100,89,66,57,92 5 | 白美珍,92,45,81,64,71,87,94 6 | 陳凱翔,96,66,43,54,65,62,81 7 | 劉慧君,90,67,45,63,60,70,81 8 | 柯韋成,63,68,84,49,81,70,88 9 | 林建宏,75,87,89,61,91,40,72 10 | 王士銘,44,59,80,98,65,44,80 11 | 謝佳穎,88,55,98,88,56,77,50 12 | 陳信宏,71,45,65,41,90,100,83 13 | 尚偉倫,60,43,95,57,63,100,72 14 | 蕭淑華,70,59,65,83,77,58,86 15 | 賴昌韻,77,85,61,88,44,76,55 16 | 賴苑禾,76,86,83,100,64,76,73 17 | 楊易政,87,75,99,48,77,41,51 18 | 高俊男,85,52,41,77,81,85,88 19 | 陳筱涵,68,79,62,71,81,63,51 20 | 羅佩樺,81,99,53,87,72,47,67 21 | 陳建香,54,81,95,56,91,41,81 22 | 童建霖,61,81,100,73,67,100,42 23 | 謝哲維,54,100,76,89,78,70,43 24 | 林建宏,58,100,47,76,79,72,67 25 | 劉嘉泰,100,49,70,42,98,71,97 26 | 郎慧萍,55,44,57,90,54,73,92 27 | 孫火清,75,91,49,97,89,81,45 28 | 林希啟,48,52,96,83,70,54,62 29 | 林世城,76,53,99,62,48,97,84 30 | 盧冠發,55,68,46,40,88,66,41 31 | 張軒宸,95,90,94,65,40,71,76 32 | 林康亮,90,68,65,84,97,68,59 33 | 林向鈺,66,97,54,52,50,79,92 34 | 吳孟穎,58,43,93,81,78,95,79 35 | 周怡啟,57,46,73,59,89,99,52 36 | 杜明延,98,75,56,71,84,79,97 37 | 溫重意,76,75,57,67,55,55,49 38 | 張嘉韋,94,44,78,70,97,52,72 39 | 許芳如,95,91,64,60,50,80,72 40 | 張韋成,86,60,99,73,85,94,41 41 | 錢佩豪,100,83,78,99,63,61,49 42 | 林昱芳,75,85,45,73,69,71,83 43 | 李進慧,72,88,85,60,68,65,77 44 | 戴萱能,86,49,81,45,80,50,62 45 | 林清英,77,44,67,76,88,92,90 46 | 吳麗卿,71,73,78,62,85,83,90 47 | 黃詩妃,68,77,53,44,84,71,78 48 | 鞠冠宇,57,70,50,99,57,100,67 49 | 彭虹屏,71,49,72,59,85,71,84 50 | 賴苑禾,65,46,45,54,53,46,97 51 | 盧冠發,72,73,78,51,62,70,94 52 | -------------------------------------------------------------------------------- /檔案存取/lesson11_1/class3.csv: -------------------------------------------------------------------------------- 1 | 姓名,科目1,科目2,科目3 2 | 鄭孟芳,56,77,74 3 | 張莉雯,81,77,96 4 | 黃麗美,98,69,57 5 | 王雅琴,74,83,80 6 | 蔡明平,91,76,71 7 | 程玫靖,76,100,73 8 | 周芷蓁,72,84,53 9 | 謝南慧,91,73,84 10 | 黎惠雯,40,40,49 11 | 鄭奇翰,66,93,43 12 | -------------------------------------------------------------------------------- /檔案存取/lesson11_1/lesson11_2.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 5, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "data": { 10 | "text/plain": [ 11 | "['姓名', '科目1', '科目2', '科目3', '科目4', '科目5']" 12 | ] 13 | }, 14 | "execution_count": 5, 15 | "metadata": {}, 16 | "output_type": "execute_result" 17 | } 18 | ], 19 | "source": [ 20 | "#使用append()\n", 21 | "subjects = []\n", 22 | "for i in range(5):\n", 23 | " subjects.append(f'科目{i+1}')\n", 24 | "names = [\"姓名\"]\n", 25 | "names.extend(subjects)\n", 26 | "names" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 6, 32 | "metadata": {}, 33 | "outputs": [ 34 | { 35 | "data": { 36 | "text/plain": [ 37 | "['姓名', '科目1', '科目2', '科目3', '科目4', '科目5']" 38 | ] 39 | }, 40 | "execution_count": 6, 41 | "metadata": {}, 42 | "output_type": "execute_result" 43 | } 44 | ], 45 | "source": [ 46 | "#list comprehension\n", 47 | "subjects = [f'科目{i+1}' for i in range(5)]\n", 48 | "names = [\"姓名\"]\n", 49 | "names.extend(subjects)\n", 50 | "names" 51 | ] 52 | } 53 | ], 54 | "metadata": { 55 | "kernelspec": { 56 | "display_name": "Python 3", 57 | "language": "python", 58 | "name": "python3" 59 | }, 60 | "language_info": { 61 | "codemirror_mode": { 62 | "name": "ipython", 63 | "version": 3 64 | }, 65 | "file_extension": ".py", 66 | "mimetype": "text/x-python", 67 | "name": "python", 68 | "nbconvert_exporter": "python", 69 | "pygments_lexer": "ipython3", 70 | "version": "3.10.13" 71 | } 72 | }, 73 | "nbformat": 4, 74 | "nbformat_minor": 2 75 | } 76 | -------------------------------------------------------------------------------- /檔案存取/lesson11_1/main.py: -------------------------------------------------------------------------------- 1 | import pyinputplus as pyip 2 | from tools import getStudents,saveToCSV 3 | 4 | if __name__ == '__main__': 5 | s_nums:int = pyip.inputInt("請輸入學生的人數(1~50):",min=1,max=50) 6 | o_nums:int = pyip.inputInt("請輸入科目數(1~7):",min=1,max=7) 7 | students:list[list] = getStudents(student_nums=s_nums,scores_nums=o_nums) 8 | fileName = pyip.inputFilename("請輸入檔案名稱(不用輸入副檔名稱):") 9 | if saveToCSV(fileName=fileName,data=students,subject_nums=o_nums): 10 | print("存檔成功") 11 | else: 12 | print("存檔失敗") -------------------------------------------------------------------------------- /檔案存取/lesson11_1/names.txt: -------------------------------------------------------------------------------- 1 | 陳怡伶 2 | 馮芳如 3 | 蒙淑惠 4 | 張軒宸 5 | 陳向愛 6 | 賴心怡 7 | 王怡珊 8 | 林詠斌 9 | 陳淑娟 10 | 崔孝憲 11 | 林希啟 12 | 楊韋廷 13 | 陳文賢 14 | 王士銘 15 | 賴昌韻 16 | 黃名明 17 | 吳麗卿 18 | 游治旺 19 | 蔡嘉音 20 | 黃靜怡 21 | 黃淑芬 22 | 龔姵君 23 | 景歡燦 24 | 李政成 25 | 楊綺芬 26 | 昌嘉洋 27 | 李慈啟 28 | 游倫城 29 | 林淑安 30 | 蔡士賢 31 | 林世城 32 | 林佳蓉 33 | 柯宜臻 34 | 傅佳琳 35 | 林瑞喬 36 | 林佳慧 37 | 鍾俞禎 38 | 劉慧君 39 | 劉林中 40 | 林怡偉 41 | 余丞苓 42 | 黃佩玲 43 | 林建宏 44 | 方雅慧 45 | 林柏洋 46 | 郭舜昇 47 | 艾巧夫 48 | 童建霖 49 | 蔡至剛 50 | 黃心航 51 | 張凡成 52 | 郭淑枝 53 | 黃必琪 54 | 楊健麟 55 | 林建勳 56 | 鄭琇亞 57 | 王雅琴 58 | 李美洋 59 | 楊少亮 60 | 王泓泰 61 | 黃江旭 62 | 王梅劭 63 | 林佳光 64 | 盧必妍 65 | 林思賢 66 | 鄧哲榮 67 | 陳家年 68 | 張俊傑 69 | 洪阿惠 70 | 陳彥治 71 | 盧冠發 72 | 程玫靖 73 | 潘俊賢 74 | 呂傑宣 75 | 鄭孟芳 76 | 彭茹靖 77 | 王孝純 78 | 吳昕婷 79 | 朱惠儀 80 | 盧文啟 81 | 謝佳穎 82 | 鄭憲定 83 | 馮淑芬 84 | 聶心怡 85 | 黃志福 86 | 馬彥文 87 | 郭淑真 88 | 吳欣書 89 | 鄭佳玲 90 | 黃健發 91 | 胡姿婷 92 | 林義皓 93 | 胡芳瑜 94 | 楊易政 95 | 王德城 96 | 劉依婷 97 | 吳俐芷 98 | 黃詩妃 99 | 柯韋成 100 | 鄧亭聿 101 | 王雅慧 102 | 陳凱翔 103 | 藍哲嘉 104 | 趙偉銘 105 | 張韋成 106 | 林向鈺 107 | 周琬婷 108 | 尚偉倫 109 | 賴佳雯 110 | 陳姵彬 111 | 林群清 112 | 趙家豪 113 | 李政白 114 | 林俊翔 115 | 李進慧 116 | 楊韻如 117 | 藍姿婷 118 | 劉嘉泰 119 | 王柏聖 120 | 孫宜珊 121 | 戴萱能 122 | 高士凱 123 | 楊又源 124 | 劉昀天 125 | 王怡君 126 | 余月修 127 | 劉萬季 128 | 陳信宏 129 | 陳孝邦 130 | 朱彥志 131 | 陳奇瑄 132 | 鄧淑娟 133 | 陳逸凡 134 | 張牧聿 135 | 唐雪豪 136 | 林康亮 137 | 黃旻林 138 | 蕭淑華 139 | 劉雯芬 140 | 陳美惠 141 | 孫火清 142 | 溫法堯 143 | 錢欣潔 144 | 陳倩潔 145 | 李雅怡 146 | 白美珍 147 | 葉志峰 148 | 黃佩芬 149 | 黃麗美 150 | 黃奎紹 151 | 邱亭君 152 | 詹忠光 153 | 戚亨 154 | 賴又琦 155 | 林佳人 156 | 黃善迪 157 | 賴苑禾 158 | 溫重意 159 | 周怡啟 160 | 王明昇 161 | 羅佩樺 162 | 陳家維 163 | 張莉雯 164 | 高俊男 165 | 林冠蕙 166 | 王品星 167 | 吳孟穎 168 | 黃雅慧 169 | 馮耀中 170 | 元延辛 171 | 王坤安 172 | 陳慧君 173 | 張伊映 174 | 林士凱 175 | 蘇婷婷 176 | 陳淑萍 177 | 林玉佩 178 | 謝貞妃 179 | 杜儀鳳 180 | 陳倩妮 181 | 胡淑貞 182 | 楊偉翔 183 | 姜琬婷 184 | 張雅芬 185 | 葉祖雄 186 | 沈心利 187 | 彭虹屏 188 | 余宗儒 189 | 李立偉 190 | 臧怡君 191 | 吳振瑋 192 | 陳建豪 193 | 蕭怡伶 194 | 周芷蓁 195 | 黃偉剛 196 | 黃婷婷 197 | 郎慧萍 198 | 林昱芳 199 | 趙宛真 200 | 白世宏 201 | 杜明延 202 | 許淑婷 203 | 林珍旺 204 | 蔡孟泉 205 | 吳晴洋 206 | 游一鈺 207 | 朱士弘 208 | 黃政甫 209 | 游淑惠 210 | 張婕妤 211 | 陳逸華 212 | 張天亨 213 | 張嘉韋 214 | 王志謙 215 | 黎惠雯 216 | 高信宏 217 | 梁柏宇 218 | 林志喜 219 | 金宜芳 220 | 簡國瑋 221 | 林清英 222 | 黃彥孝 223 | 鄭奇翰 224 | 李慶亮 225 | 李蓉瑞 226 | 張明惟 227 | 游詩亞 228 | 黃嘉琪 229 | 張家秀 230 | 吳柏誠 231 | 陳得映 232 | 郭致恬 233 | 林麗萍 234 | 陳樂紫 235 | 翁鈺婷 236 | 蔡世馨 237 | 楊建安 238 | 李湘婷 239 | 鞠冠宇 240 | 林志成 241 | 陳信念 242 | 林益妏 243 | 蔡偉成 244 | 王惠皓 245 | 王筱婷 246 | 楊火帆 247 | 陳怡珊 248 | 張慧君 249 | 翁羽威 250 | 羅幸娥 251 | 陳俊憲 252 | 洪奎夫 253 | 翁均安 254 | 吳明妮 255 | 高智超 256 | 王人仰 257 | 劉旭士 258 | 蘇凡菁 259 | 謝哲維 260 | 彭偉妃 261 | 劉耿琦 262 | 黃柏宇 263 | 李佳彥 264 | 唐翊修 265 | 陳建香 266 | 葉軍仰 267 | 吳志宣 268 | 林珈發 269 | 黃翔杰 270 | 郭坤花 271 | 吳淑惠 272 | 簡美君 273 | 許芳如 274 | 謝水儒 275 | 陳怡容 276 | 蔡欣汝 277 | 王良斌 278 | 周家銘 279 | 張凱妮 280 | 鄭淑珍 281 | 陳嘉淑 282 | 魏秋萍 283 | 簡佳樺 284 | 劉佳佩 285 | 李彥伸 286 | 陳筱涵 287 | 蔡明平 288 | 王展人 289 | 方筠紹 290 | 陳志偉 291 | 錢佩豪 292 | 陳冠霞 293 | 潘英迪 294 | 陳冠竹 295 | 李淑芳 296 | 謝南慧 297 | 趙家豪 298 | 龐皓芳 299 | 張彥博 -------------------------------------------------------------------------------- /檔案存取/lesson11_1/tools.py: -------------------------------------------------------------------------------- 1 | import random,csv 2 | 3 | def getStudents(student_nums:int=1, scores_nums:int=2) -> list[list]: 4 | ''' 5 | 參數: student_nums -> 學生人數\n 6 | 參數: scores_nums -> 科目數\n 7 | ''' 8 | with open('names.txt',mode='r',encoding='utf-8') as file: 9 | names:str = file.read() 10 | 11 | nameList:list[str] = names.split('\n') 12 | students:list[list] = [] 13 | 14 | names:list[str] = random.choices(nameList,k=student_nums) 15 | for name in names: 16 | stu:list[int|str] = [] 17 | stu.append(name) 18 | for i in range(scores_nums): 19 | stu.append(random.randint(40,100)) 20 | students.append(stu) 21 | 22 | return students 23 | 24 | def saveToCSV(fileName:str,data:list[list],subject_nums:int) -> bool: 25 | fileName += ".csv" 26 | subjects = [f'科目{i+1}' for i in range(subject_nums)] 27 | fields = ['姓名'] 28 | fields.extend(subjects) 29 | with open(fileName,mode='w',encoding='utf-8',newline='') as file: 30 | try: 31 | writer = csv.writer(file) 32 | writer.writerow(fields) 33 | writer.writerows(data) 34 | except: 35 | return False 36 | else: 37 | return True 38 | -------------------------------------------------------------------------------- /檔案存取/lesson12_1/3年6班.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/lesson12_1/3年6班.xlsx -------------------------------------------------------------------------------- /檔案存取/lesson12_1/TreeData.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/lesson12_1/TreeData.xlsx -------------------------------------------------------------------------------- /檔案存取/lesson12_1/main.py: -------------------------------------------------------------------------------- 1 | import pyinputplus as pyip 2 | from tools import getStudents,save_to_csv 3 | 4 | 5 | if __name__ == "__main__": 6 | s_nums:int = pyip.inputInt("請輸入學生的人數(1~50):",min=1,max=50) 7 | students:list[dict] = getStudents(s_nums) 8 | fileName:str = pyip.inputFilename("請輸入檔案名稱(不用輸入副檔名稱):") 9 | save_to_csv(students,fileName) 10 | -------------------------------------------------------------------------------- /檔案存取/lesson12_1/names.txt: -------------------------------------------------------------------------------- 1 | 陳怡伶 2 | 馮芳如 3 | 蒙淑惠 4 | 張軒宸 5 | 陳向愛 6 | 賴心怡 7 | 王怡珊 8 | 林詠斌 9 | 陳淑娟 10 | 崔孝憲 11 | 林希啟 12 | 楊韋廷 13 | 陳文賢 14 | 王士銘 15 | 賴昌韻 16 | 黃名明 17 | 吳麗卿 18 | 游治旺 19 | 蔡嘉音 20 | 黃靜怡 21 | 黃淑芬 22 | 龔姵君 23 | 景歡燦 24 | 李政成 25 | 楊綺芬 26 | 昌嘉洋 27 | 李慈啟 28 | 游倫城 29 | 林淑安 30 | 蔡士賢 31 | 林世城 32 | 林佳蓉 33 | 柯宜臻 34 | 傅佳琳 35 | 林瑞喬 36 | 林佳慧 37 | 鍾俞禎 38 | 劉慧君 39 | 劉林中 40 | 林怡偉 41 | 余丞苓 42 | 黃佩玲 43 | 林建宏 44 | 方雅慧 45 | 林柏洋 46 | 郭舜昇 47 | 艾巧夫 48 | 童建霖 49 | 蔡至剛 50 | 黃心航 51 | 張凡成 52 | 郭淑枝 53 | 黃必琪 54 | 楊健麟 55 | 林建勳 56 | 鄭琇亞 57 | 王雅琴 58 | 李美洋 59 | 楊少亮 60 | 王泓泰 61 | 黃江旭 62 | 王梅劭 63 | 林佳光 64 | 盧必妍 65 | 林思賢 66 | 鄧哲榮 67 | 陳家年 68 | 張俊傑 69 | 洪阿惠 70 | 陳彥治 71 | 盧冠發 72 | 程玫靖 73 | 潘俊賢 74 | 呂傑宣 75 | 鄭孟芳 76 | 彭茹靖 77 | 王孝純 78 | 吳昕婷 79 | 朱惠儀 80 | 盧文啟 81 | 謝佳穎 82 | 鄭憲定 83 | 馮淑芬 84 | 聶心怡 85 | 黃志福 86 | 馬彥文 87 | 郭淑真 88 | 吳欣書 89 | 鄭佳玲 90 | 黃健發 91 | 胡姿婷 92 | 林義皓 93 | 胡芳瑜 94 | 楊易政 95 | 王德城 96 | 劉依婷 97 | 吳俐芷 98 | 黃詩妃 99 | 柯韋成 100 | 鄧亭聿 101 | 王雅慧 102 | 陳凱翔 103 | 藍哲嘉 104 | 趙偉銘 105 | 張韋成 106 | 林向鈺 107 | 周琬婷 108 | 尚偉倫 109 | 賴佳雯 110 | 陳姵彬 111 | 林群清 112 | 趙家豪 113 | 李政白 114 | 林俊翔 115 | 李進慧 116 | 楊韻如 117 | 藍姿婷 118 | 劉嘉泰 119 | 王柏聖 120 | 孫宜珊 121 | 戴萱能 122 | 高士凱 123 | 楊又源 124 | 劉昀天 125 | 王怡君 126 | 余月修 127 | 劉萬季 128 | 陳信宏 129 | 陳孝邦 130 | 朱彥志 131 | 陳奇瑄 132 | 鄧淑娟 133 | 陳逸凡 134 | 張牧聿 135 | 唐雪豪 136 | 林康亮 137 | 黃旻林 138 | 蕭淑華 139 | 劉雯芬 140 | 陳美惠 141 | 孫火清 142 | 溫法堯 143 | 錢欣潔 144 | 陳倩潔 145 | 李雅怡 146 | 白美珍 147 | 葉志峰 148 | 黃佩芬 149 | 黃麗美 150 | 黃奎紹 151 | 邱亭君 152 | 詹忠光 153 | 戚亨 154 | 賴又琦 155 | 林佳人 156 | 黃善迪 157 | 賴苑禾 158 | 溫重意 159 | 周怡啟 160 | 王明昇 161 | 羅佩樺 162 | 陳家維 163 | 張莉雯 164 | 高俊男 165 | 林冠蕙 166 | 王品星 167 | 吳孟穎 168 | 黃雅慧 169 | 馮耀中 170 | 元延辛 171 | 王坤安 172 | 陳慧君 173 | 張伊映 174 | 林士凱 175 | 蘇婷婷 176 | 陳淑萍 177 | 林玉佩 178 | 謝貞妃 179 | 杜儀鳳 180 | 陳倩妮 181 | 胡淑貞 182 | 楊偉翔 183 | 姜琬婷 184 | 張雅芬 185 | 葉祖雄 186 | 沈心利 187 | 彭虹屏 188 | 余宗儒 189 | 李立偉 190 | 臧怡君 191 | 吳振瑋 192 | 陳建豪 193 | 蕭怡伶 194 | 周芷蓁 195 | 黃偉剛 196 | 黃婷婷 197 | 郎慧萍 198 | 林昱芳 199 | 趙宛真 200 | 白世宏 201 | 杜明延 202 | 許淑婷 203 | 林珍旺 204 | 蔡孟泉 205 | 吳晴洋 206 | 游一鈺 207 | 朱士弘 208 | 黃政甫 209 | 游淑惠 210 | 張婕妤 211 | 陳逸華 212 | 張天亨 213 | 張嘉韋 214 | 王志謙 215 | 黎惠雯 216 | 高信宏 217 | 梁柏宇 218 | 林志喜 219 | 金宜芳 220 | 簡國瑋 221 | 林清英 222 | 黃彥孝 223 | 鄭奇翰 224 | 李慶亮 225 | 李蓉瑞 226 | 張明惟 227 | 游詩亞 228 | 黃嘉琪 229 | 張家秀 230 | 吳柏誠 231 | 陳得映 232 | 郭致恬 233 | 林麗萍 234 | 陳樂紫 235 | 翁鈺婷 236 | 蔡世馨 237 | 楊建安 238 | 李湘婷 239 | 鞠冠宇 240 | 林志成 241 | 陳信念 242 | 林益妏 243 | 蔡偉成 244 | 王惠皓 245 | 王筱婷 246 | 楊火帆 247 | 陳怡珊 248 | 張慧君 249 | 翁羽威 250 | 羅幸娥 251 | 陳俊憲 252 | 洪奎夫 253 | 翁均安 254 | 吳明妮 255 | 高智超 256 | 王人仰 257 | 劉旭士 258 | 蘇凡菁 259 | 謝哲維 260 | 彭偉妃 261 | 劉耿琦 262 | 黃柏宇 263 | 李佳彥 264 | 唐翊修 265 | 陳建香 266 | 葉軍仰 267 | 吳志宣 268 | 林珈發 269 | 黃翔杰 270 | 郭坤花 271 | 吳淑惠 272 | 簡美君 273 | 許芳如 274 | 謝水儒 275 | 陳怡容 276 | 蔡欣汝 277 | 王良斌 278 | 周家銘 279 | 張凱妮 280 | 鄭淑珍 281 | 陳嘉淑 282 | 魏秋萍 283 | 簡佳樺 284 | 劉佳佩 285 | 李彥伸 286 | 陳筱涵 287 | 蔡明平 288 | 王展人 289 | 方筠紹 290 | 陳志偉 291 | 錢佩豪 292 | 陳冠霞 293 | 潘英迪 294 | 陳冠竹 295 | 李淑芳 296 | 謝南慧 297 | 趙家豪 298 | 龐皓芳 299 | 張彥博 -------------------------------------------------------------------------------- /檔案存取/lesson12_1/test1.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "stu1 = {\n", 10 | " '姓名':'陳怡伶',\n", 11 | " '國文':89,\n", 12 | " '英文':92,\n", 13 | " '數學':83,\n", 14 | " '地理':91,\n", 15 | " '歷史':65,\n", 16 | " }\n", 17 | "\n", 18 | "stu2 = {\n", 19 | " '姓名':'馮芳如',\n", 20 | " '國文':92,\n", 21 | " '英文':75,\n", 22 | " '數學':92,\n", 23 | " '地理':89,\n", 24 | " '歷史':77,\n", 25 | " }" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 3, 31 | "metadata": {}, 32 | "outputs": [ 33 | { 34 | "data": { 35 | "text/plain": [ 36 | "[{'姓名': '陳怡伶', '國文': 89, '英文': 92, '數學': 83, '地理': 91, '歷史': 65},\n", 37 | " {'姓名': '馮芳如', '國文': 92, '英文': 75, '數學': 92, '地理': 89, '歷史': 77}]" 38 | ] 39 | }, 40 | "execution_count": 3, 41 | "metadata": {}, 42 | "output_type": "execute_result" 43 | } 44 | ], 45 | "source": [ 46 | "students = [stu1,stu2]\n", 47 | "students" 48 | ] 49 | }, 50 | { 51 | "cell_type": "code", 52 | "execution_count": 16, 53 | "metadata": {}, 54 | "outputs": [], 55 | "source": [ 56 | "from random import randint,choices\n", 57 | "\n", 58 | "def getStudents(nums:int) -> list[dict]: \n", 59 | " students:list[dict] = []\n", 60 | " with open('names.txt',mode='r',encoding='utf-8') as file:\n", 61 | " names:str = file.read()\n", 62 | " nameList:list[str] = names.split('\\n')\n", 63 | " names:list[str] = choices(nameList,k=nums)\n", 64 | "\n", 65 | " for i in range(nums):\n", 66 | " stu = {\n", 67 | " '姓名':names[i],\n", 68 | " '國文':randint(45,100),\n", 69 | " '英文':randint(45,100),\n", 70 | " '數學':randint(45,100),\n", 71 | " '地理':randint(45,100),\n", 72 | " '歷史':randint(45,100),\n", 73 | " }\n", 74 | " students.append(stu)\n", 75 | " \n", 76 | " return students\n", 77 | "\n" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": 17, 83 | "metadata": {}, 84 | "outputs": [ 85 | { 86 | "name": "stdout", 87 | "output_type": "stream", 88 | "text": [ 89 | "請輸入學生的人數(1~50):10\n" 90 | ] 91 | }, 92 | { 93 | "data": { 94 | "text/plain": [ 95 | "[{'姓名': '游一鈺', '國文': 97, '英文': 61, '數學': 49, '地理': 88, '歷史': 78},\n", 96 | " {'姓名': '王泓泰', '國文': 45, '英文': 81, '數學': 83, '地理': 100, '歷史': 94},\n", 97 | " {'姓名': '楊偉翔', '國文': 51, '英文': 80, '數學': 94, '地理': 71, '歷史': 94},\n", 98 | " {'姓名': '朱彥志', '國文': 90, '英文': 90, '數學': 86, '地理': 56, '歷史': 45},\n", 99 | " {'姓名': '陳逸凡', '國文': 71, '英文': 90, '數學': 55, '地理': 99, '歷史': 87},\n", 100 | " {'姓名': '黃健發', '國文': 59, '英文': 85, '數學': 87, '地理': 60, '歷史': 82},\n", 101 | " {'姓名': '錢佩豪', '國文': 83, '英文': 86, '數學': 54, '地理': 59, '歷史': 90},\n", 102 | " {'姓名': '謝南慧', '國文': 99, '英文': 61, '數學': 79, '地理': 94, '歷史': 60},\n", 103 | " {'姓名': '溫重意', '國文': 68, '英文': 92, '數學': 67, '地理': 71, '歷史': 84},\n", 104 | " {'姓名': '孫宜珊', '國文': 71, '英文': 72, '數學': 72, '地理': 97, '歷史': 46}]" 105 | ] 106 | }, 107 | "execution_count": 17, 108 | "metadata": {}, 109 | "output_type": "execute_result" 110 | } 111 | ], 112 | "source": [ 113 | "import pyinputplus as pyip\n", 114 | "s_nums:int = pyip.inputInt(\"請輸入學生的人數(1~50):\",min=1,max=50)\n", 115 | "print(s_nums)\n", 116 | "students = getStudents(s_nums)\n", 117 | "students" 118 | ] 119 | }, 120 | { 121 | "cell_type": "code", 122 | "execution_count": 24, 123 | "metadata": {}, 124 | "outputs": [ 125 | { 126 | "name": "stdout", 127 | "output_type": "stream", 128 | "text": [ 129 | "寫入成功\n" 130 | ] 131 | } 132 | ], 133 | "source": [ 134 | "import csv\n", 135 | "from csv import DictWriter\n", 136 | "\n", 137 | "def save_to_csv(students:list[dict],fileName:str)->None: \n", 138 | " fileNameWithExtension:str = fileName + '.csv'\n", 139 | " with open(fileNameWithExtension,mode='w',encoding='utf-8',newline='') as file:\n", 140 | " fieldnames:list[str] = ['姓名', '國文', '英文', '數學', '地理', '歷史']\n", 141 | " writer:DictWriter = csv.DictWriter(file,fieldnames=fieldnames)\n", 142 | " writer.writeheader()\n", 143 | " writer.writerows(students)\n", 144 | " print(\"寫入成功\")\n", 145 | "\n", 146 | "save_to_csv(students,'class2')" 147 | ] 148 | }, 149 | { 150 | "cell_type": "code", 151 | "execution_count": 25, 152 | "metadata": {}, 153 | "outputs": [ 154 | { 155 | "name": "stdout", 156 | "output_type": "stream", 157 | "text": [ 158 | "請輸入檔案名稱(不用輸入副檔名稱):寫入成功\n" 159 | ] 160 | } 161 | ], 162 | "source": [ 163 | "fileName = pyip.inputFilename(\"請輸入檔案名稱(不用輸入副檔名稱):\")\n", 164 | "save_to_csv(students,fileName)" 165 | ] 166 | } 167 | ], 168 | "metadata": { 169 | "kernelspec": { 170 | "display_name": "Python 3", 171 | "language": "python", 172 | "name": "python3" 173 | }, 174 | "language_info": { 175 | "codemirror_mode": { 176 | "name": "ipython", 177 | "version": 3 178 | }, 179 | "file_extension": ".py", 180 | "mimetype": "text/x-python", 181 | "name": "python", 182 | "nbconvert_exporter": "python", 183 | "pygments_lexer": "ipython3", 184 | "version": "3.10.13" 185 | } 186 | }, 187 | "nbformat": 4, 188 | "nbformat_minor": 2 189 | } 190 | -------------------------------------------------------------------------------- /檔案存取/lesson12_1/test2.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 3, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "from openpyxl import Workbook\n", 10 | "\n", 11 | "wb = Workbook()\n", 12 | "ws = wb.active\n", 13 | "treeData = [[\"Type\", \"Leaf Color\", \"Height\"], [\"Maple\", \"Red\", 549], [\"Oak\", \"Green\", 783], [\"Pine\", \"Green\", 1204]]\n", 14 | "for row in treeData:\n", 15 | " ws.append(row)\n", 16 | "wb.save(\"TreeData.xlsx\")" 17 | ] 18 | }, 19 | { 20 | "cell_type": "code", 21 | "execution_count": 4, 22 | "metadata": {}, 23 | "outputs": [], 24 | "source": [ 25 | "from openpyxl import Workbook\n", 26 | "wb = Workbook()\n", 27 | "ws = wb.create_sheet(\"3年5班\")\n", 28 | "wb.save(\"3年5班.xlsx\")" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 9, 34 | "metadata": {}, 35 | "outputs": [], 36 | "source": [ 37 | "from openpyxl import Workbook\n", 38 | "wb = Workbook()\n", 39 | "ws = wb.active\n", 40 | "ws.title = \"3年6班\"\n", 41 | "ws['A1'] = \"姓名\"\n", 42 | "ws['B1'] = \"國文\"\n", 43 | "ws['C1'] = \"英文\"\n", 44 | "ws['D1'] = \"數學\"\n", 45 | "ws['E1'] = \"地理\"\n", 46 | "ws['F1'] = \"歷史\"\n", 47 | "ws.append(['楊易政',80,63,60,98,74])\n", 48 | "ws.append(['崔孝憲',92,72,90,98,88])\n", 49 | "ws.append(['王怡珊',72,73,83,40,48])\n", 50 | "ws1 = wb.create_sheet(\"3年5班\")\n", 51 | "ws2 = wb.create_sheet(\"3年4班\")\n", 52 | "wb.save(\"3年6班.xlsx\")" 53 | ] 54 | } 55 | ], 56 | "metadata": { 57 | "kernelspec": { 58 | "display_name": "Python 3", 59 | "language": "python", 60 | "name": "python3" 61 | }, 62 | "language_info": { 63 | "codemirror_mode": { 64 | "name": "ipython", 65 | "version": 3 66 | }, 67 | "file_extension": ".py", 68 | "mimetype": "text/x-python", 69 | "name": "python", 70 | "nbconvert_exporter": "python", 71 | "pygments_lexer": "ipython3", 72 | "version": "3.10.13" 73 | } 74 | }, 75 | "nbformat": 4, 76 | "nbformat_minor": 2 77 | } 78 | -------------------------------------------------------------------------------- /檔案存取/lesson12_1/tools.py: -------------------------------------------------------------------------------- 1 | from random import randint,choices 2 | import csv 3 | from csv import DictWriter 4 | 5 | def getStudents(nums:int) -> list[dict]: 6 | students:list[dict] = [] 7 | with open('names.txt',mode='r',encoding='utf-8') as file: 8 | names:str = file.read() 9 | nameList:list[str] = names.split('\n') 10 | names:list[str] = choices(nameList,k=nums) 11 | 12 | for i in range(nums): 13 | stu = { 14 | '姓名':names[i], 15 | '國文':randint(45,100), 16 | '英文':randint(45,100), 17 | '數學':randint(45,100), 18 | '地理':randint(45,100), 19 | '歷史':randint(45,100), 20 | } 21 | students.append(stu) 22 | 23 | return students 24 | 25 | def save_to_csv(students:list[dict],fileName:str)->None: 26 | fileNameWithExtension:str = fileName + '.csv' 27 | with open(fileNameWithExtension,mode='w',encoding='utf-8',newline='') as file: 28 | fieldnames:list[str] = ['姓名', '國文', '英文', '數學', '地理', '歷史'] 29 | writer:DictWriter = csv.DictWriter(file,fieldnames=fieldnames) 30 | writer.writeheader() 31 | writer.writerows(students) 32 | print("寫入成功") -------------------------------------------------------------------------------- /檔案存取/lesson13_1/3-5.csv: -------------------------------------------------------------------------------- 1 | 姓名,國文,英文,數學,地理,歷史 2 | 張天亨,57,55,56,77,77 3 | 吳俐芷,88,45,46,59,70 4 | 黃柏宇,67,78,90,67,56 5 | 張伊映,71,52,61,97,53 6 | 張伊映,67,100,50,57,97 7 | 柯宜臻,65,74,75,87,97 8 | 陳奇瑄,65,54,51,57,68 9 | 李美洋,80,56,51,55,60 10 | 林向鈺,82,67,100,54,78 11 | 黎惠雯,60,50,66,79,85 12 | 李淑芳,84,58,76,99,64 13 | 陳孝邦,59,51,72,86,65 14 | 唐翊修,86,56,84,57,75 15 | 楊綺芬,75,46,48,81,78 16 | 馮耀中,87,96,80,65,54 17 | 傅佳琳,65,70,78,68,60 18 | 洪奎夫,99,76,74,64,79 19 | 黃彥孝,89,98,68,53,51 20 | 蔡士賢,96,76,94,51,67 21 | 鄭孟芳,81,68,89,79,49 22 | 蔡至剛,75,77,63,88,62 23 | 蘇婷婷,67,77,49,72,93 24 | 王良斌,69,95,56,85,88 25 | 吳昕婷,83,81,83,46,90 26 | 黃旻林,61,70,74,50,60 27 | 楊又源,96,73,53,82,82 28 | 林麗萍,68,91,97,87,94 29 | 楊韻如,93,58,90,99,62 30 | 王品星,92,96,81,93,84 31 | 楊火帆,85,52,85,58,93 32 | 吳欣書,51,59,65,46,70 33 | 張彥博,86,67,82,52,93 34 | 劉旭士,77,89,80,68,99 35 | 鄧哲榮,88,76,74,52,62 36 | 馬彥文,55,61,57,62,89 37 | 劉佳佩,53,65,79,49,55 38 | 林向鈺,83,83,77,47,55 39 | 李佳彥,59,87,66,61,89 40 | 謝水儒,94,71,96,96,97 41 | 黃詩妃,72,95,89,79,74 42 | 林士凱,60,91,93,59,65 43 | 郭坤花,46,83,99,98,60 44 | 趙家豪,68,99,75,94,45 45 | 黃名明,54,60,51,69,46 46 | 黃雅慧,58,71,81,83,50 47 | 陳向愛,72,53,77,87,54 48 | 楊健麟,65,64,59,96,77 49 | 張婕妤,97,71,83,81,54 50 | 蔡士賢,71,61,71,90,69 51 | 王德城,79,76,60,83,72 52 | -------------------------------------------------------------------------------- /檔案存取/lesson13_1/3班.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/lesson13_1/3班.xlsx -------------------------------------------------------------------------------- /檔案存取/lesson13_1/main.py: -------------------------------------------------------------------------------- 1 | import pyinputplus as pyip 2 | from tools import getStudents,save_to_csv,save_to_excel 3 | 4 | 5 | if __name__ == "__main__": 6 | s_nums:int = pyip.inputInt("請輸入學生的人數(1~50):",min=1,max=50) 7 | students:list[dict] = getStudents(s_nums) 8 | fileName:str = pyip.inputFilename("請輸入檔案名稱(不用輸入副檔名稱):") 9 | format = pyip.inputChoice(["1","2"],"請問要輸出那一個格式:\n按1 excel\n按2 csv\n請選擇:") 10 | if format == "1": 11 | save_to_excel(students,fileName) 12 | else: 13 | save_to_csv(students,fileName) 14 | 15 | -------------------------------------------------------------------------------- /檔案存取/lesson13_1/names.txt: -------------------------------------------------------------------------------- 1 | 陳怡伶 2 | 馮芳如 3 | 蒙淑惠 4 | 張軒宸 5 | 陳向愛 6 | 賴心怡 7 | 王怡珊 8 | 林詠斌 9 | 陳淑娟 10 | 崔孝憲 11 | 林希啟 12 | 楊韋廷 13 | 陳文賢 14 | 王士銘 15 | 賴昌韻 16 | 黃名明 17 | 吳麗卿 18 | 游治旺 19 | 蔡嘉音 20 | 黃靜怡 21 | 黃淑芬 22 | 龔姵君 23 | 景歡燦 24 | 李政成 25 | 楊綺芬 26 | 昌嘉洋 27 | 李慈啟 28 | 游倫城 29 | 林淑安 30 | 蔡士賢 31 | 林世城 32 | 林佳蓉 33 | 柯宜臻 34 | 傅佳琳 35 | 林瑞喬 36 | 林佳慧 37 | 鍾俞禎 38 | 劉慧君 39 | 劉林中 40 | 林怡偉 41 | 余丞苓 42 | 黃佩玲 43 | 林建宏 44 | 方雅慧 45 | 林柏洋 46 | 郭舜昇 47 | 艾巧夫 48 | 童建霖 49 | 蔡至剛 50 | 黃心航 51 | 張凡成 52 | 郭淑枝 53 | 黃必琪 54 | 楊健麟 55 | 林建勳 56 | 鄭琇亞 57 | 王雅琴 58 | 李美洋 59 | 楊少亮 60 | 王泓泰 61 | 黃江旭 62 | 王梅劭 63 | 林佳光 64 | 盧必妍 65 | 林思賢 66 | 鄧哲榮 67 | 陳家年 68 | 張俊傑 69 | 洪阿惠 70 | 陳彥治 71 | 盧冠發 72 | 程玫靖 73 | 潘俊賢 74 | 呂傑宣 75 | 鄭孟芳 76 | 彭茹靖 77 | 王孝純 78 | 吳昕婷 79 | 朱惠儀 80 | 盧文啟 81 | 謝佳穎 82 | 鄭憲定 83 | 馮淑芬 84 | 聶心怡 85 | 黃志福 86 | 馬彥文 87 | 郭淑真 88 | 吳欣書 89 | 鄭佳玲 90 | 黃健發 91 | 胡姿婷 92 | 林義皓 93 | 胡芳瑜 94 | 楊易政 95 | 王德城 96 | 劉依婷 97 | 吳俐芷 98 | 黃詩妃 99 | 柯韋成 100 | 鄧亭聿 101 | 王雅慧 102 | 陳凱翔 103 | 藍哲嘉 104 | 趙偉銘 105 | 張韋成 106 | 林向鈺 107 | 周琬婷 108 | 尚偉倫 109 | 賴佳雯 110 | 陳姵彬 111 | 林群清 112 | 趙家豪 113 | 李政白 114 | 林俊翔 115 | 李進慧 116 | 楊韻如 117 | 藍姿婷 118 | 劉嘉泰 119 | 王柏聖 120 | 孫宜珊 121 | 戴萱能 122 | 高士凱 123 | 楊又源 124 | 劉昀天 125 | 王怡君 126 | 余月修 127 | 劉萬季 128 | 陳信宏 129 | 陳孝邦 130 | 朱彥志 131 | 陳奇瑄 132 | 鄧淑娟 133 | 陳逸凡 134 | 張牧聿 135 | 唐雪豪 136 | 林康亮 137 | 黃旻林 138 | 蕭淑華 139 | 劉雯芬 140 | 陳美惠 141 | 孫火清 142 | 溫法堯 143 | 錢欣潔 144 | 陳倩潔 145 | 李雅怡 146 | 白美珍 147 | 葉志峰 148 | 黃佩芬 149 | 黃麗美 150 | 黃奎紹 151 | 邱亭君 152 | 詹忠光 153 | 戚亨 154 | 賴又琦 155 | 林佳人 156 | 黃善迪 157 | 賴苑禾 158 | 溫重意 159 | 周怡啟 160 | 王明昇 161 | 羅佩樺 162 | 陳家維 163 | 張莉雯 164 | 高俊男 165 | 林冠蕙 166 | 王品星 167 | 吳孟穎 168 | 黃雅慧 169 | 馮耀中 170 | 元延辛 171 | 王坤安 172 | 陳慧君 173 | 張伊映 174 | 林士凱 175 | 蘇婷婷 176 | 陳淑萍 177 | 林玉佩 178 | 謝貞妃 179 | 杜儀鳳 180 | 陳倩妮 181 | 胡淑貞 182 | 楊偉翔 183 | 姜琬婷 184 | 張雅芬 185 | 葉祖雄 186 | 沈心利 187 | 彭虹屏 188 | 余宗儒 189 | 李立偉 190 | 臧怡君 191 | 吳振瑋 192 | 陳建豪 193 | 蕭怡伶 194 | 周芷蓁 195 | 黃偉剛 196 | 黃婷婷 197 | 郎慧萍 198 | 林昱芳 199 | 趙宛真 200 | 白世宏 201 | 杜明延 202 | 許淑婷 203 | 林珍旺 204 | 蔡孟泉 205 | 吳晴洋 206 | 游一鈺 207 | 朱士弘 208 | 黃政甫 209 | 游淑惠 210 | 張婕妤 211 | 陳逸華 212 | 張天亨 213 | 張嘉韋 214 | 王志謙 215 | 黎惠雯 216 | 高信宏 217 | 梁柏宇 218 | 林志喜 219 | 金宜芳 220 | 簡國瑋 221 | 林清英 222 | 黃彥孝 223 | 鄭奇翰 224 | 李慶亮 225 | 李蓉瑞 226 | 張明惟 227 | 游詩亞 228 | 黃嘉琪 229 | 張家秀 230 | 吳柏誠 231 | 陳得映 232 | 郭致恬 233 | 林麗萍 234 | 陳樂紫 235 | 翁鈺婷 236 | 蔡世馨 237 | 楊建安 238 | 李湘婷 239 | 鞠冠宇 240 | 林志成 241 | 陳信念 242 | 林益妏 243 | 蔡偉成 244 | 王惠皓 245 | 王筱婷 246 | 楊火帆 247 | 陳怡珊 248 | 張慧君 249 | 翁羽威 250 | 羅幸娥 251 | 陳俊憲 252 | 洪奎夫 253 | 翁均安 254 | 吳明妮 255 | 高智超 256 | 王人仰 257 | 劉旭士 258 | 蘇凡菁 259 | 謝哲維 260 | 彭偉妃 261 | 劉耿琦 262 | 黃柏宇 263 | 李佳彥 264 | 唐翊修 265 | 陳建香 266 | 葉軍仰 267 | 吳志宣 268 | 林珈發 269 | 黃翔杰 270 | 郭坤花 271 | 吳淑惠 272 | 簡美君 273 | 許芳如 274 | 謝水儒 275 | 陳怡容 276 | 蔡欣汝 277 | 王良斌 278 | 周家銘 279 | 張凱妮 280 | 鄭淑珍 281 | 陳嘉淑 282 | 魏秋萍 283 | 簡佳樺 284 | 劉佳佩 285 | 李彥伸 286 | 陳筱涵 287 | 蔡明平 288 | 王展人 289 | 方筠紹 290 | 陳志偉 291 | 錢佩豪 292 | 陳冠霞 293 | 潘英迪 294 | 陳冠竹 295 | 李淑芳 296 | 謝南慧 297 | 趙家豪 298 | 龐皓芳 299 | 張彥博 -------------------------------------------------------------------------------- /檔案存取/lesson13_1/test1.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "stu1 = {\n", 10 | " '姓名':'陳怡伶',\n", 11 | " '國文':89,\n", 12 | " '英文':92,\n", 13 | " '數學':83,\n", 14 | " '地理':91,\n", 15 | " '歷史':65,\n", 16 | " }\n", 17 | "\n", 18 | "stu2 = {\n", 19 | " '姓名':'馮芳如',\n", 20 | " '國文':92,\n", 21 | " '英文':75,\n", 22 | " '數學':92,\n", 23 | " '地理':89,\n", 24 | " '歷史':77,\n", 25 | " }" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 3, 31 | "metadata": {}, 32 | "outputs": [ 33 | { 34 | "data": { 35 | "text/plain": [ 36 | "[{'姓名': '陳怡伶', '國文': 89, '英文': 92, '數學': 83, '地理': 91, '歷史': 65},\n", 37 | " {'姓名': '馮芳如', '國文': 92, '英文': 75, '數學': 92, '地理': 89, '歷史': 77}]" 38 | ] 39 | }, 40 | "execution_count": 3, 41 | "metadata": {}, 42 | "output_type": "execute_result" 43 | } 44 | ], 45 | "source": [ 46 | "students = [stu1,stu2]\n", 47 | "students" 48 | ] 49 | }, 50 | { 51 | "cell_type": "code", 52 | "execution_count": 16, 53 | "metadata": {}, 54 | "outputs": [], 55 | "source": [ 56 | "from random import randint,choices\n", 57 | "\n", 58 | "def getStudents(nums:int) -> list[dict]: \n", 59 | " students:list[dict] = []\n", 60 | " with open('names.txt',mode='r',encoding='utf-8') as file:\n", 61 | " names:str = file.read()\n", 62 | " nameList:list[str] = names.split('\\n')\n", 63 | " names:list[str] = choices(nameList,k=nums)\n", 64 | "\n", 65 | " for i in range(nums):\n", 66 | " stu = {\n", 67 | " '姓名':names[i],\n", 68 | " '國文':randint(45,100),\n", 69 | " '英文':randint(45,100),\n", 70 | " '數學':randint(45,100),\n", 71 | " '地理':randint(45,100),\n", 72 | " '歷史':randint(45,100),\n", 73 | " }\n", 74 | " students.append(stu)\n", 75 | " \n", 76 | " return students\n", 77 | "\n" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": 17, 83 | "metadata": {}, 84 | "outputs": [ 85 | { 86 | "name": "stdout", 87 | "output_type": "stream", 88 | "text": [ 89 | "請輸入學生的人數(1~50):10\n" 90 | ] 91 | }, 92 | { 93 | "data": { 94 | "text/plain": [ 95 | "[{'姓名': '游一鈺', '國文': 97, '英文': 61, '數學': 49, '地理': 88, '歷史': 78},\n", 96 | " {'姓名': '王泓泰', '國文': 45, '英文': 81, '數學': 83, '地理': 100, '歷史': 94},\n", 97 | " {'姓名': '楊偉翔', '國文': 51, '英文': 80, '數學': 94, '地理': 71, '歷史': 94},\n", 98 | " {'姓名': '朱彥志', '國文': 90, '英文': 90, '數學': 86, '地理': 56, '歷史': 45},\n", 99 | " {'姓名': '陳逸凡', '國文': 71, '英文': 90, '數學': 55, '地理': 99, '歷史': 87},\n", 100 | " {'姓名': '黃健發', '國文': 59, '英文': 85, '數學': 87, '地理': 60, '歷史': 82},\n", 101 | " {'姓名': '錢佩豪', '國文': 83, '英文': 86, '數學': 54, '地理': 59, '歷史': 90},\n", 102 | " {'姓名': '謝南慧', '國文': 99, '英文': 61, '數學': 79, '地理': 94, '歷史': 60},\n", 103 | " {'姓名': '溫重意', '國文': 68, '英文': 92, '數學': 67, '地理': 71, '歷史': 84},\n", 104 | " {'姓名': '孫宜珊', '國文': 71, '英文': 72, '數學': 72, '地理': 97, '歷史': 46}]" 105 | ] 106 | }, 107 | "execution_count": 17, 108 | "metadata": {}, 109 | "output_type": "execute_result" 110 | } 111 | ], 112 | "source": [ 113 | "import pyinputplus as pyip\n", 114 | "s_nums:int = pyip.inputInt(\"請輸入學生的人數(1~50):\",min=1,max=50)\n", 115 | "print(s_nums)\n", 116 | "students = getStudents(s_nums)\n", 117 | "students" 118 | ] 119 | }, 120 | { 121 | "cell_type": "code", 122 | "execution_count": 24, 123 | "metadata": {}, 124 | "outputs": [ 125 | { 126 | "name": "stdout", 127 | "output_type": "stream", 128 | "text": [ 129 | "寫入成功\n" 130 | ] 131 | } 132 | ], 133 | "source": [ 134 | "import csv\n", 135 | "from csv import DictWriter\n", 136 | "\n", 137 | "def save_to_csv(students:list[dict],fileName:str)->None: \n", 138 | " fileNameWithExtension:str = fileName + '.csv'\n", 139 | " with open(fileNameWithExtension,mode='w',encoding='utf-8',newline='') as file:\n", 140 | " fieldnames:list[str] = ['姓名', '國文', '英文', '數學', '地理', '歷史']\n", 141 | " writer:DictWriter = csv.DictWriter(file,fieldnames=fieldnames)\n", 142 | " writer.writeheader()\n", 143 | " writer.writerows(students)\n", 144 | " print(\"寫入成功\")\n", 145 | "\n", 146 | "save_to_csv(students,'class2')" 147 | ] 148 | }, 149 | { 150 | "cell_type": "code", 151 | "execution_count": 25, 152 | "metadata": {}, 153 | "outputs": [ 154 | { 155 | "name": "stdout", 156 | "output_type": "stream", 157 | "text": [ 158 | "請輸入檔案名稱(不用輸入副檔名稱):寫入成功\n" 159 | ] 160 | } 161 | ], 162 | "source": [ 163 | "fileName = pyip.inputFilename(\"請輸入檔案名稱(不用輸入副檔名稱):\")\n", 164 | "save_to_csv(students,fileName)" 165 | ] 166 | } 167 | ], 168 | "metadata": { 169 | "kernelspec": { 170 | "display_name": "Python 3", 171 | "language": "python", 172 | "name": "python3" 173 | }, 174 | "language_info": { 175 | "codemirror_mode": { 176 | "name": "ipython", 177 | "version": 3 178 | }, 179 | "file_extension": ".py", 180 | "mimetype": "text/x-python", 181 | "name": "python", 182 | "nbconvert_exporter": "python", 183 | "pygments_lexer": "ipython3", 184 | "version": "3.10.13" 185 | } 186 | }, 187 | "nbformat": 4, 188 | "nbformat_minor": 2 189 | } 190 | -------------------------------------------------------------------------------- /檔案存取/lesson13_1/test2.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 3, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "from openpyxl import Workbook\n", 10 | "\n", 11 | "wb = Workbook()\n", 12 | "ws = wb.active\n", 13 | "treeData = [[\"Type\", \"Leaf Color\", \"Height\"], [\"Maple\", \"Red\", 549], [\"Oak\", \"Green\", 783], [\"Pine\", \"Green\", 1204]]\n", 14 | "for row in treeData:\n", 15 | " ws.append(row)\n", 16 | "wb.save(\"TreeData.xlsx\")" 17 | ] 18 | }, 19 | { 20 | "cell_type": "code", 21 | "execution_count": 4, 22 | "metadata": {}, 23 | "outputs": [], 24 | "source": [ 25 | "from openpyxl import Workbook\n", 26 | "wb = Workbook()\n", 27 | "ws = wb.create_sheet(\"3年5班\")\n", 28 | "wb.save(\"3年5班.xlsx\")" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 9, 34 | "metadata": {}, 35 | "outputs": [], 36 | "source": [ 37 | "from openpyxl import Workbook\n", 38 | "wb = Workbook()\n", 39 | "ws = wb.active\n", 40 | "ws.title = \"3年6班\"\n", 41 | "ws['A1'] = \"姓名\"\n", 42 | "ws['B1'] = \"國文\"\n", 43 | "ws['C1'] = \"英文\"\n", 44 | "ws['D1'] = \"數學\"\n", 45 | "ws['E1'] = \"地理\"\n", 46 | "ws['F1'] = \"歷史\"\n", 47 | "ws.append(['楊易政',80,63,60,98,74])\n", 48 | "ws.append(['崔孝憲',92,72,90,98,88])\n", 49 | "ws.append(['王怡珊',72,73,83,40,48])\n", 50 | "ws1 = wb.create_sheet(\"3年5班\")\n", 51 | "ws2 = wb.create_sheet(\"3年4班\")\n", 52 | "wb.save(\"3年6班.xlsx\")" 53 | ] 54 | } 55 | ], 56 | "metadata": { 57 | "kernelspec": { 58 | "display_name": "Python 3", 59 | "language": "python", 60 | "name": "python3" 61 | }, 62 | "language_info": { 63 | "codemirror_mode": { 64 | "name": "ipython", 65 | "version": 3 66 | }, 67 | "file_extension": ".py", 68 | "mimetype": "text/x-python", 69 | "name": "python", 70 | "nbconvert_exporter": "python", 71 | "pygments_lexer": "ipython3", 72 | "version": "3.10.8" 73 | } 74 | }, 75 | "nbformat": 4, 76 | "nbformat_minor": 2 77 | } 78 | -------------------------------------------------------------------------------- /檔案存取/lesson13_1/tools.py: -------------------------------------------------------------------------------- 1 | from random import randint,choices 2 | import csv 3 | from csv import DictWriter 4 | from openpyxl import Workbook 5 | 6 | def getStudents(nums:int) -> list[dict]: 7 | students:list[dict] = [] 8 | with open('names.txt',mode='r',encoding='utf-8') as file: 9 | names:str = file.read() 10 | nameList:list[str] = names.split('\n') 11 | names:list[str] = choices(nameList,k=nums) 12 | 13 | for i in range(nums): 14 | stu = { 15 | '姓名':names[i], 16 | '國文':randint(45,100), 17 | '英文':randint(45,100), 18 | '數學':randint(45,100), 19 | '地理':randint(45,100), 20 | '歷史':randint(45,100), 21 | } 22 | students.append(stu) 23 | 24 | return students 25 | 26 | def save_to_csv(students:list[dict],fileName:str)->None: 27 | fileNameWithExtension:str = fileName + '.csv' 28 | with open(fileNameWithExtension,mode='w',encoding='utf-8',newline='') as file: 29 | fieldnames:list[str] = ['姓名', '國文', '英文', '數學', '地理', '歷史'] 30 | writer:DictWriter = csv.DictWriter(file,fieldnames=fieldnames) 31 | writer.writeheader() 32 | writer.writerows(students) 33 | print("寫入成功") 34 | 35 | def save_to_excel(students:list[dict],fileName:str) -> None: 36 | fileNameWithExtension:str = fileName + ".xlsx" 37 | #print(f"檔案名是{fileNameWithExtension}") 38 | #print(students) 39 | wb = Workbook() 40 | ws = wb.active 41 | ws.title = fileName 42 | ws['A1'] = "姓名" 43 | ws['B1'] = "國文" 44 | ws['C1'] = "英文" 45 | ws['D1'] = "數學" 46 | ws['E1'] = "地理" 47 | ws['F1'] = "歷史" 48 | for student in students: 49 | #ws.append(['楊易政',80,63,60,98,74]) 50 | studentData:list = list(student.values()) 51 | ws.append(studentData) 52 | wb.save(fileNameWithExtension) -------------------------------------------------------------------------------- /檔案存取/lesson15/lesson15_2.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": null, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import requests\n", 10 | "url ='https://opendata.cwb.gov.tw/api/v1/rest/datastore/O-A0001-001?Authorization=rdec-key-123-45678-011121314&format=JSON&WeatherElement=Weather'" 11 | ] 12 | } 13 | ], 14 | "metadata": { 15 | "language_info": { 16 | "name": "python" 17 | } 18 | }, 19 | "nbformat": 4, 20 | "nbformat_minor": 2 21 | } 22 | -------------------------------------------------------------------------------- /檔案存取/lesson15/天氣預測1天.csv: -------------------------------------------------------------------------------- 1 | ,城市,啟始時間,結束時間,最低溫度,最高溫度,感覺 2 | 0,嘉義縣,2024-01-02 18:00:00,2024-01-03 06:00:00,16.0,20.0,稍有寒意 3 | 1,新北市,2024-01-02 18:00:00,2024-01-03 06:00:00,16.0,20.0,稍有寒意 4 | 2,嘉義市,2024-01-02 18:00:00,2024-01-03 06:00:00,15.0,21.0,寒冷至舒適 5 | 3,新竹縣,2024-01-02 18:00:00,2024-01-03 06:00:00,15.0,19.0,寒冷至稍有寒意 6 | 4,新竹市,2024-01-02 18:00:00,2024-01-03 06:00:00,15.0,19.0,寒冷至稍有寒意 7 | 5,臺北市,2024-01-02 18:00:00,2024-01-03 06:00:00,16.0,20.0,稍有寒意 8 | 6,臺南市,2024-01-02 18:00:00,2024-01-03 06:00:00,17.0,20.0,稍有寒意 9 | 7,宜蘭縣,2024-01-02 18:00:00,2024-01-03 06:00:00,15.0,19.0,寒冷至稍有寒意 10 | 8,苗栗縣,2024-01-02 18:00:00,2024-01-03 06:00:00,15.0,19.0,寒冷至稍有寒意 11 | 9,雲林縣,2024-01-02 18:00:00,2024-01-03 06:00:00,16.0,20.0,稍有寒意 12 | 10,花蓮縣,2024-01-02 18:00:00,2024-01-03 06:00:00,17.0,20.0,稍有寒意 13 | 11,臺中市,2024-01-02 18:00:00,2024-01-03 06:00:00,17.0,21.0,稍有寒意 14 | 12,臺東縣,2024-01-02 18:00:00,2024-01-03 06:00:00,18.0,21.0,稍有寒意至舒適 15 | 13,桃園市,2024-01-02 18:00:00,2024-01-03 06:00:00,15.0,19.0,寒冷至稍有寒意 16 | 14,南投縣,2024-01-02 18:00:00,2024-01-03 06:00:00,15.0,21.0,寒冷至舒適 17 | 15,高雄市,2024-01-02 18:00:00,2024-01-03 06:00:00,18.0,21.0,稍有寒意至舒適 18 | 16,金門縣,2024-01-02 18:00:00,2024-01-03 06:00:00,14.0,16.0,寒冷 19 | 17,屏東縣,2024-01-02 18:00:00,2024-01-03 06:00:00,17.0,22.0,稍有寒意至舒適 20 | 18,基隆市,2024-01-02 18:00:00,2024-01-03 06:00:00,16.0,19.0,稍有寒意 21 | 19,澎湖縣,2024-01-02 18:00:00,2024-01-03 06:00:00,17.0,18.0,稍有寒意 22 | 20,彰化縣,2024-01-02 18:00:00,2024-01-03 06:00:00,17.0,20.0,稍有寒意 23 | 21,連江縣,2024-01-02 18:00:00,2024-01-03 06:00:00,12.0,13.0,寒冷 24 | -------------------------------------------------------------------------------- /檔案存取/lesson15/天氣預測1天.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/lesson15/天氣預測1天.xlsx -------------------------------------------------------------------------------- /檔案存取/names.txt: -------------------------------------------------------------------------------- 1 | 陳怡伶 2 | 馮芳如 3 | 蒙淑惠 4 | 張軒宸 5 | 陳向愛 6 | 賴心怡 7 | 王怡珊 8 | 林詠斌 9 | 陳淑娟 10 | 崔孝憲 11 | 林希啟 12 | 楊韋廷 13 | 陳文賢 14 | 王士銘 15 | 賴昌韻 16 | 黃名明 17 | 吳麗卿 18 | 游治旺 19 | 蔡嘉音 20 | 黃靜怡 21 | 黃淑芬 22 | 龔姵君 23 | 景歡燦 24 | 李政成 25 | 楊綺芬 26 | 昌嘉洋 27 | 李慈啟 28 | 游倫城 29 | 林淑安 30 | 蔡士賢 31 | 林世城 32 | 林佳蓉 33 | 柯宜臻 34 | 傅佳琳 35 | 林瑞喬 36 | 林佳慧 37 | 鍾俞禎 38 | 劉慧君 39 | 劉林中 40 | 林怡偉 41 | 余丞苓 42 | 黃佩玲 43 | 林建宏 44 | 方雅慧 45 | 林柏洋 46 | 郭舜昇 47 | 艾巧夫 48 | 童建霖 49 | 蔡至剛 50 | 黃心航 51 | 張凡成 52 | 郭淑枝 53 | 黃必琪 54 | 楊健麟 55 | 林建勳 56 | 鄭琇亞 57 | 王雅琴 58 | 李美洋 59 | 楊少亮 60 | 王泓泰 61 | 黃江旭 62 | 王梅劭 63 | 林佳光 64 | 盧必妍 65 | 林思賢 66 | 鄧哲榮 67 | 陳家年 68 | 張俊傑 69 | 洪阿惠 70 | 陳彥治 71 | 盧冠發 72 | 程玫靖 73 | 潘俊賢 74 | 呂傑宣 75 | 鄭孟芳 76 | 彭茹靖 77 | 王孝純 78 | 吳昕婷 79 | 朱惠儀 80 | 盧文啟 81 | 謝佳穎 82 | 鄭憲定 83 | 馮淑芬 84 | 聶心怡 85 | 黃志福 86 | 馬彥文 87 | 郭淑真 88 | 吳欣書 89 | 鄭佳玲 90 | 黃健發 91 | 胡姿婷 92 | 林義皓 93 | 胡芳瑜 94 | 楊易政 95 | 王德城 96 | 劉依婷 97 | 吳俐芷 98 | 黃詩妃 99 | 柯韋成 100 | 鄧亭聿 101 | 王雅慧 102 | 陳凱翔 103 | 藍哲嘉 104 | 趙偉銘 105 | 張韋成 106 | 林向鈺 107 | 周琬婷 108 | 尚偉倫 109 | 賴佳雯 110 | 陳姵彬 111 | 林群清 112 | 趙家豪 113 | 李政白 114 | 林俊翔 115 | 李進慧 116 | 楊韻如 117 | 藍姿婷 118 | 劉嘉泰 119 | 王柏聖 120 | 孫宜珊 121 | 戴萱能 122 | 高士凱 123 | 楊又源 124 | 劉昀天 125 | 王怡君 126 | 余月修 127 | 劉萬季 128 | 陳信宏 129 | 陳孝邦 130 | 朱彥志 131 | 陳奇瑄 132 | 鄧淑娟 133 | 陳逸凡 134 | 張牧聿 135 | 唐雪豪 136 | 林康亮 137 | 黃旻林 138 | 蕭淑華 139 | 劉雯芬 140 | 陳美惠 141 | 孫火清 142 | 溫法堯 143 | 錢欣潔 144 | 陳倩潔 145 | 李雅怡 146 | 白美珍 147 | 葉志峰 148 | 黃佩芬 149 | 黃麗美 150 | 黃奎紹 151 | 邱亭君 152 | 詹忠光 153 | 戚亨 154 | 賴又琦 155 | 林佳人 156 | 黃善迪 157 | 賴苑禾 158 | 溫重意 159 | 周怡啟 160 | 王明昇 161 | 羅佩樺 162 | 陳家維 163 | 張莉雯 164 | 高俊男 165 | 林冠蕙 166 | 王品星 167 | 吳孟穎 168 | 黃雅慧 169 | 馮耀中 170 | 元延辛 171 | 王坤安 172 | 陳慧君 173 | 張伊映 174 | 林士凱 175 | 蘇婷婷 176 | 陳淑萍 177 | 林玉佩 178 | 謝貞妃 179 | 杜儀鳳 180 | 陳倩妮 181 | 胡淑貞 182 | 楊偉翔 183 | 姜琬婷 184 | 張雅芬 185 | 葉祖雄 186 | 沈心利 187 | 彭虹屏 188 | 余宗儒 189 | 李立偉 190 | 臧怡君 191 | 吳振瑋 192 | 陳建豪 193 | 蕭怡伶 194 | 周芷蓁 195 | 黃偉剛 196 | 黃婷婷 197 | 郎慧萍 198 | 林昱芳 199 | 趙宛真 200 | 白世宏 201 | 杜明延 202 | 許淑婷 203 | 林珍旺 204 | 蔡孟泉 205 | 吳晴洋 206 | 游一鈺 207 | 朱士弘 208 | 黃政甫 209 | 游淑惠 210 | 張婕妤 211 | 陳逸華 212 | 張天亨 213 | 張嘉韋 214 | 王志謙 215 | 黎惠雯 216 | 高信宏 217 | 梁柏宇 218 | 林志喜 219 | 金宜芳 220 | 簡國瑋 221 | 林清英 222 | 黃彥孝 223 | 鄭奇翰 224 | 李慶亮 225 | 李蓉瑞 226 | 張明惟 227 | 游詩亞 228 | 黃嘉琪 229 | 張家秀 230 | 吳柏誠 231 | 陳得映 232 | 郭致恬 233 | 林麗萍 234 | 陳樂紫 235 | 翁鈺婷 236 | 蔡世馨 237 | 楊建安 238 | 李湘婷 239 | 鞠冠宇 240 | 林志成 241 | 陳信念 242 | 林益妏 243 | 蔡偉成 244 | 王惠皓 245 | 王筱婷 246 | 楊火帆 247 | 陳怡珊 248 | 張慧君 249 | 翁羽威 250 | 羅幸娥 251 | 陳俊憲 252 | 洪奎夫 253 | 翁均安 254 | 吳明妮 255 | 高智超 256 | 王人仰 257 | 劉旭士 258 | 蘇凡菁 259 | 謝哲維 260 | 彭偉妃 261 | 劉耿琦 262 | 黃柏宇 263 | 李佳彥 264 | 唐翊修 265 | 陳建香 266 | 葉軍仰 267 | 吳志宣 268 | 林珈發 269 | 黃翔杰 270 | 郭坤花 271 | 吳淑惠 272 | 簡美君 273 | 許芳如 274 | 謝水儒 275 | 陳怡容 276 | 蔡欣汝 277 | 王良斌 278 | 周家銘 279 | 張凱妮 280 | 鄭淑珍 281 | 陳嘉淑 282 | 魏秋萍 283 | 簡佳樺 284 | 劉佳佩 285 | 李彥伸 286 | 陳筱涵 287 | 蔡明平 288 | 王展人 289 | 方筠紹 290 | 陳志偉 291 | 錢佩豪 292 | 陳冠霞 293 | 潘英迪 294 | 陳冠竹 295 | 李淑芳 296 | 謝南慧 297 | 趙家豪 298 | 龐皓芳 299 | 張彥博 -------------------------------------------------------------------------------- /檔案存取/relativity: -------------------------------------------------------------------------------- 1 | There was a young lady named Bright, 2 | ... Whose speed was far 3 | ... She started one day 4 | ... In a relative way, 5 | ... And returned on the 6 | 7 | -------------------------------------------------------------------------------- /檔案存取/result-readlines.txt: -------------------------------------------------------------------------------- 1 | 但帕內洛引述杜特蒂的話宣稱,菲律賓決定把台灣納入旅行禁令,跟一中政策「無關」。 2 | 台灣現有武漢肺炎確診病例為18例,中國大陸約6萬例。台灣已多次抱怨世衛把台灣視為中國一部分的作法不公,會誤導其他國家認為台灣疫情跟中國大陸一樣嚴重。 3 | 根據菲律賓總統府發言人帕內洛(Salvador Panelo),杜特蒂(Rodrigo Duterte)表示:「我首要關切的是我國人民的健康和安全。」 4 | 菲律賓拒解除對台旅行禁令 杜特蒂稱無涉一中政策 5 | 菲律賓本週以抑制俗稱武漢肺炎的2019年冠狀病毒疾病(COVID-19)疫情為由,對台實施旅行禁令。台灣當局已表示,若菲方不解除禁令,台灣將考慮反制措施。但杜特蒂仍決定維持禁令。 6 | 路透社報導,由於北京宣稱台灣是中國的一部分,世界衛生組織(WHO)處理疫情資訊時把台灣納入中國,導致若干國家對台灣人實施跟對中國人一樣的限制。 7 | (中央社台北/馬尼拉13日綜合外電報導)菲律賓總統杜特蒂今天拒絕台灣方面的呼籲,不解除對台灣人實施的旅行禁令。杜特蒂並稱自己首要關切的是菲律賓人的安全,這項決定跟一中政策「無關」。 -------------------------------------------------------------------------------- /檔案存取/sample5.py: -------------------------------------------------------------------------------- 1 | from tkinter import * 2 | import requests 3 | import csv 4 | 5 | def main(w): 6 | gui(w) 7 | w.mainloop() 8 | 9 | def gui(w): 10 | global scrollbar, mylist, message 11 | w.title("收集資料") 12 | # w.geometry('500x300') 13 | topFrame = Frame(w,bd=1,relief=GROOVE) 14 | topFrame.config(bg="#dddddd") 15 | Button(topFrame, text="空氣品質指標",font=('Verdans',13,'bold'),command=aqi).pack(ipadx=25, ipady=10, side=LEFT, expand=YES) 16 | Button(topFrame, text="確定2",font=('Verdans',13,'bold')).pack(ipadx=25, ipady=10, side=LEFT, expand=YES) 17 | Button(topFrame, text="確定3",font=('Verdans',13,'bold')).pack(ipadx=25, ipady=10, side=LEFT, expand=YES) 18 | topFrame.pack(ipady=20,ipadx=20,pady=20,padx=20) 19 | 20 | bottomFrame = Frame(w,bd=1,relief=GROOVE) 21 | scrollbar = Scrollbar(bottomFrame) 22 | scrollbar.pack(side=LEFT) 23 | mylist = Listbox(bottomFrame,selectmode=SINGLE,yscrollcommand=scrollbar.set) 24 | #register-選取改變 25 | mylist.bind('<>', changeSelected) 26 | mylist.pack(side=LEFT, fill=BOTH) 27 | message = StringVar() 28 | Label(bottomFrame,textvariable=message,justify=LEFT).pack(side=LEFT) 29 | message.set("狀態:") 30 | bottomFrame.pack(ipady=20,ipadx=20,pady=20,padx=20,expand=YES,fill=X) 31 | 32 | def aqi(): 33 | # 下載AQI 34 | global rows 35 | print("下載資料") 36 | CSV_URL = "https://data.epa.gov.tw/api/v1/aqx_p_432?limit=1000&api_key=9be7b239-557b-4c10-9775-78cadfc555e9&format=csv" 37 | response = requests.get(CSV_URL, stream=True) 38 | response.encoding = 'utf-8' 39 | 40 | if response.status_code == 200: 41 | print('下載成功') 42 | 43 | with open('空氣品質指標.csv', 'wb') as fd: 44 | for chunk in response.iter_content(chunk_size=128): 45 | fd.write(chunk) 46 | fd.close() 47 | 48 | with open("空氣品質指標.csv","r",encoding='UTF-8') as file: 49 | #content = file.read() 50 | next(file) 51 | rows=csv.reader(file) 52 | rows = list(rows) 53 | for item in rows: 54 | mylist.insert(END,item[0]) 55 | 56 | 57 | scrollbar.config(command = mylist.yview) 58 | file.close() 59 | 60 | else: 61 | print("下載失敗") 62 | return 63 | 64 | def changeSelected(event): 65 | #傳出tuple,第一個是選取的索引 66 | selectedIndex= mylist.curselection()[0] 67 | print(selectedIndex) 68 | #print(mylist.get(mylist.curselection())) 69 | siteName = rows[selectedIndex][0] 70 | country = rows[selectedIndex][1] 71 | aqi = rows[selectedIndex][2] 72 | pollutant = rows[selectedIndex][3] 73 | status = rows[selectedIndex][4] 74 | print(siteName, country, aqi, pollutant, status) 75 | message.set("狀態:\n\n 監測站:%s \n 縣市:%s \n AQI:%s \n 浮粒:%s \n 狀態:%s" % (siteName, country, aqi, pollutant, status)) 76 | 77 | 78 | if __name__ == "__main__": 79 | rows = None 80 | scrollbar = None 81 | mylist = None 82 | message = None 83 | window = Tk() 84 | main(window) 85 | #https://docs.google.com/forms/d/e/1FAIpQLSeQmoajuMAlFiqzA_7nSgoGXaSzDNK244BoPczBI82IPV_62A/viewform?usp=sf_link -------------------------------------------------------------------------------- /檔案存取/score.json: -------------------------------------------------------------------------------- 1 | {"people": [{"name": "Scott", "website": "stackabuse.com", "from": "Nebraska"}, {"name": "Larry", "website": "google.com", "from": "Michigan"}]} -------------------------------------------------------------------------------- /檔案存取/score.txt: -------------------------------------------------------------------------------- 1 | {1: 67, 2: 78, 3: 78, 4: 56} 5: 30} -------------------------------------------------------------------------------- /檔案存取/train.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/train.db -------------------------------------------------------------------------------- /檔案存取/ttest.csv: -------------------------------------------------------------------------------- 1 | 1-2-3-4-hello 2 | 5-6-7-8-world 3 | 9-10-11-12-foo 4 | -------------------------------------------------------------------------------- /檔案存取/學習用範例來源檔.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/學習用範例來源檔.zip -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-701(新竹縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-701(新竹縣).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-702(苗栗縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-702(苗栗縣).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-703(彰化縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-703(彰化縣).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-704(南投縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-704(南投縣).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-705(雲林縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-705(雲林縣).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-706(嘉義縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-706(嘉義縣).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-707(屏東縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-707(屏東縣).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-708(宜蘭縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-708(宜蘭縣).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-709(花蓮縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-709(花蓮縣).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-710(臺東縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-710(臺東縣).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-711(澎湖縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-711(澎湖縣).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-712(基隆市).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-712(基隆市).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-713(新竹市).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-713(新竹市).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-714(嘉義市).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-714(嘉義市).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-801(金門縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-801(金門縣).xls -------------------------------------------------------------------------------- /檔案存取/縣市長/縣表3-1-802(連江縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/檔案存取/縣市長/縣表3-1-802(連江縣).xls -------------------------------------------------------------------------------- /物件和類別/sample1.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 10, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "class Person():\n", 10 | " def __init__(self,name,age=40,height=180,weight=70):\n", 11 | " #attribute\n", 12 | " self.name=name\n", 13 | " self.age=age\n", 14 | " self.height=height\n", 15 | " self.weight=weight " 16 | ] 17 | }, 18 | { 19 | "cell_type": "code", 20 | "execution_count": 18, 21 | "metadata": {}, 22 | "outputs": [ 23 | { 24 | "name": "stdout", 25 | "output_type": "stream", 26 | "text": [ 27 | "jenny\n", 28 | "180\n", 29 | "70\n", 30 | "40\n" 31 | ] 32 | }, 33 | { 34 | "data": { 35 | "text/plain": [ 36 | "{'name': 'jenny', 'age': 40, 'height': 180, 'weight': 70}" 37 | ] 38 | }, 39 | "execution_count": 18, 40 | "metadata": {}, 41 | "output_type": "execute_result" 42 | } 43 | ], 44 | "source": [ 45 | "p1 = Person(\"jenny\")\n", 46 | "p1.__dict__" 47 | ] 48 | }, 49 | { 50 | "cell_type": "code", 51 | "execution_count": 19, 52 | "metadata": {}, 53 | "outputs": [ 54 | { 55 | "data": { 56 | "text/plain": [ 57 | "{'name': 'alice', 'age': 25, 'height': 175, 'weight': 60}" 58 | ] 59 | }, 60 | "execution_count": 19, 61 | "metadata": {}, 62 | "output_type": "execute_result" 63 | } 64 | ], 65 | "source": [ 66 | "p2 = Person(\"alice\",age=25,height=175,weight=60)\n", 67 | "p2.__dict__" 68 | ] 69 | }, 70 | { 71 | "cell_type": "code", 72 | "execution_count": 25, 73 | "metadata": {}, 74 | "outputs": [ 75 | { 76 | "data": { 77 | "text/plain": [ 78 | "{'name': 'john', 'age': 30, 'height': 169, 'weight': 59}" 79 | ] 80 | }, 81 | "execution_count": 25, 82 | "metadata": {}, 83 | "output_type": "execute_result" 84 | } 85 | ], 86 | "source": [ 87 | "kwargs = {\"age\":30, \"height\":169, \"weight\":59}\n", 88 | "p3 = Person(\"john\",**kwargs) #解開dictionary成為引數名稱=value,引數名稱=value,引數名稱=value\n", 89 | "p3.__dict__" 90 | ] 91 | }, 92 | { 93 | "cell_type": "code", 94 | "execution_count": 28, 95 | "metadata": {}, 96 | "outputs": [ 97 | { 98 | "name": "stdout", 99 | "output_type": "stream", 100 | "text": [ 101 | "{'age': 50, 'height': 179, 'weight': 47}\n" 102 | ] 103 | }, 104 | { 105 | "data": { 106 | "text/plain": [ 107 | "{'name': 'robert', 'age': 50, 'height': 179, 'weight': 47}" 108 | ] 109 | }, 110 | "execution_count": 28, 111 | "metadata": {}, 112 | "output_type": "execute_result" 113 | } 114 | ], 115 | "source": [ 116 | "#繼承\n", 117 | "class Student(Person):\n", 118 | " def __init__(self,name,**kwargs):\n", 119 | " print(kwargs)\n", 120 | " super().__init__(name,**kwargs)\n", 121 | "\n", 122 | "s1 = Student(\"robert\",age=50,height=179,weight=47)\n", 123 | "s1.__dict__\n" 124 | ] 125 | }, 126 | { 127 | "cell_type": "code", 128 | "execution_count": 37, 129 | "metadata": {}, 130 | "outputs": [ 131 | { 132 | "name": "stdout", 133 | "output_type": "stream", 134 | "text": [ 135 | "{'age': 50, 'height': 179, 'weight': 47}\n" 136 | ] 137 | }, 138 | { 139 | "data": { 140 | "text/plain": [ 141 | "{'name': 'robert',\n", 142 | " 'age': 50,\n", 143 | " 'height': 179,\n", 144 | " 'weight': 47,\n", 145 | " '_Student__id': '11111'}" 146 | ] 147 | }, 148 | "execution_count": 37, 149 | "metadata": {}, 150 | "output_type": "execute_result" 151 | } 152 | ], 153 | "source": [ 154 | "#增加property getter 和 setter\n", 155 | "class Student(Person):\n", 156 | " def __init__(self,name,id=\"11111\",**kwargs):\n", 157 | " print(kwargs)\n", 158 | " super().__init__(name,**kwargs)\n", 159 | " self.__id = id #__id是attribute,__符號代表不可以讀和寫\n", 160 | " \n", 161 | " #定義id,可以讀\n", 162 | " @property\n", 163 | " def id(self):\n", 164 | " return self.__id;\n", 165 | " \n", 166 | " @id.setter\n", 167 | " def id(self,num):\n", 168 | " if len(num) == 5:\n", 169 | " self.__id = num;\n", 170 | " else:\n", 171 | " self.__id = \"11111\"\n", 172 | " \n", 173 | "\n", 174 | "s1 = Student(\"robert\",age=50,height=179,weight=47)\n", 175 | "s1.id\n", 176 | "s1.__dict__" 177 | ] 178 | } 179 | ], 180 | "metadata": { 181 | "kernelspec": { 182 | "display_name": "Python 3.9.2 ('venv01')", 183 | "language": "python", 184 | "name": "python3" 185 | }, 186 | "language_info": { 187 | "codemirror_mode": { 188 | "name": "ipython", 189 | "version": 3 190 | }, 191 | "file_extension": ".py", 192 | "mimetype": "text/x-python", 193 | "name": "python", 194 | "nbconvert_exporter": "python", 195 | "pygments_lexer": "ipython3", 196 | "version": "3.9.2" 197 | }, 198 | "orig_nbformat": 4, 199 | "vscode": { 200 | "interpreter": { 201 | "hash": "dac6abd5712d71da3aedb6d43013faa4ec7aeed0cd689026e96ac4f71ccf0f19" 202 | } 203 | } 204 | }, 205 | "nbformat": 4, 206 | "nbformat_minor": 2 207 | } 208 | -------------------------------------------------------------------------------- /網路下載小專案/Pikachu.py: -------------------------------------------------------------------------------- 1 | 2 | import turtle as t 3 | 4 | def nose(): 5 | t.penup() 6 | t.seth(90) 7 | t.fd(100) 8 | t.pendown() 9 | t.begin_fill() 10 | t.fillcolor("black") 11 | t.seth(45) 12 | t.fd(25) 13 | t.seth(135) 14 | t.circle(25,90) 15 | t.seth(315) 16 | t.fd(25) 17 | t.end_fill() 18 | 19 | def eyes(seth,fd,c): 20 | t.penup() 21 | t.seth(seth) 22 | t.fd(fd) 23 | t.pendown() 24 | t.begin_fill() 25 | t.fillcolor('black') 26 | t.circle(50) 27 | t.end_fill() 28 | t.penup() 29 | t.circle(50,c) 30 | t.pendown() 31 | t.begin_fill() 32 | t.fillcolor('white') 33 | t.circle(20) 34 | t.end_fill() 35 | 36 | def face(seth,fd): 37 | t.penup() 38 | t.seth(seth) 39 | t.fd(fd) 40 | t.pendown() 41 | t.begin_fill() 42 | t.fillcolor('red') 43 | t.circle(70) 44 | t.end_fill() 45 | 46 | def lip(): 47 | t.penup() 48 | t.seth(135) 49 | t.fd(250) 50 | t.pendown() 51 | t.seth(-300) 52 | t.circle(30,-65) 53 | t.begin_fill() 54 | t.fillcolor('Firebrick') 55 | t.seth(165) 56 | t.fd(140) 57 | t.seth(195) 58 | t.fd(140) 59 | t.seth(-360) 60 | t.circle(30,-65) 61 | t.penup() 62 | t.seth(-60) 63 | t.circle(30,65) 64 | t.pendown() 65 | t.seth(-70) 66 | t.fd(240) 67 | t.circle(55,140) 68 | t.seth(70) 69 | t.fd(240) 70 | t.end_fill() 71 | t.seth(-110) 72 | t.fd(80) 73 | t.begin_fill() 74 | t.fillcolor('Firebrick') 75 | t.seth(120) 76 | t.circle(120,123) 77 | t.seth(-70) 78 | t.fd(165) 79 | t.circle(55,140) 80 | t.seth(72) 81 | t.fd(165) 82 | t.end_fill() 83 | 84 | def setting(): 85 | t.pensize(4) 86 | t.hideturtle() 87 | t.setup(1000,600) 88 | t.speed(10) 89 | t.screensize(bg='yellow') 90 | 91 | def main(): 92 | setting() 93 | nose() 94 | eyes(160,250,60) 95 | eyes(-9.5,530,230) 96 | face(195,600) 97 | face(-11,720) 98 | lip() 99 | t.done() 100 | 101 | if __name__ == '__main__': 102 | main() -------------------------------------------------------------------------------- /網路下載小專案/doramo.py: -------------------------------------------------------------------------------- 1 | 2 | # * -- utf-8 -- * 3 | # Author: Tang 4 | 5 | import turtle as t 6 | 7 | t.speed(10) 8 | t.pensize(8) 9 | t.hideturtle() 10 | t.screensize(500, 500, bg='white') 11 | 12 | # 猫脸 13 | t.fillcolor('#00A1E8') 14 | t.begin_fill() 15 | t.circle(120) 16 | t.end_fill() 17 | 18 | t.pensize(3) 19 | t.fillcolor('white') 20 | t.begin_fill() 21 | t.circle(100) 22 | t.end_fill() 23 | 24 | t.pu() 25 | t.home() 26 | t.goto(0, 134) 27 | t.pd() 28 | t.pensize(4) 29 | t.fillcolor("#EA0014") 30 | t.begin_fill() 31 | t.circle(18) 32 | t.end_fill() 33 | 34 | t.pu() 35 | t.goto(7, 155) 36 | t.pensize(2) 37 | t.color('white', 'white') 38 | t.pd() 39 | t.begin_fill() 40 | t.circle(4) 41 | t.end_fill() 42 | 43 | t.pu() 44 | t.goto(-30, 160) 45 | t.pensize(4) 46 | t.pd() 47 | t.color('black', 'white') 48 | t.begin_fill() 49 | a = 0.4 50 | for i in range(120): 51 | if 0 <= i < 30 or 60 <= i < 90: 52 | a = a+0.08 53 | t.lt(3) #向左转3度 54 | t.fd(a) #向前走a的步长 55 | else: 56 | a = a-0.08 57 | t.lt(3) 58 | t.fd(a) 59 | t.end_fill() 60 | 61 | t.pu() 62 | t.goto(30, 160) 63 | t.pensize(4) 64 | t.pd() 65 | t.color('black', 'white') 66 | t.begin_fill() 67 | for i in range(120): 68 | if 0 <= i < 30 or 60 <= i < 90: 69 | a = a+0.08 70 | t.lt(3) # 向左转3度 71 | t.fd(a) # 向前走a的步长 72 | else: 73 | a = a-0.08 74 | t.lt(3) 75 | t.fd(a) 76 | t.end_fill() 77 | 78 | t.pu() 79 | t.goto(-38,190) 80 | t.pensize(8) 81 | t.pd() 82 | t.right(-30) 83 | t.forward(15) 84 | t.right(70) 85 | t.forward(15) 86 | 87 | t.pu() 88 | t.goto(15, 185) 89 | t.pensize(4) 90 | t.pd() 91 | t.color('black', 'black') 92 | t.begin_fill() 93 | t.circle(13) 94 | t.end_fill() 95 | 96 | t.pu() 97 | t.goto(13, 190) 98 | t.pensize(2) 99 | t.pd() 100 | t.color('white', 'white') 101 | t.begin_fill() 102 | t.circle(5) 103 | t.end_fill() 104 | 105 | t.pu() 106 | t.home() 107 | t.goto(0, 134) 108 | t.pensize(4) 109 | t.pencolor('black') 110 | t.pd() 111 | t.right(90) 112 | t.forward(40) 113 | 114 | t.pu() 115 | t.home() 116 | t.goto(0, 124) 117 | t.pensize(3) 118 | t.pencolor('black') 119 | t.pd() 120 | t.left(10) 121 | t.forward(80) 122 | 123 | t.pu() 124 | t.home() 125 | t.goto(0, 114) 126 | t.pensize(3) 127 | t.pencolor('black') 128 | t.pd() 129 | t.left(6) 130 | t.forward(80) 131 | 132 | t.pu() 133 | t.home() 134 | t.goto(0,104) 135 | t.pensize(3) 136 | t.pencolor('black') 137 | t.pd() 138 | t.left(0) 139 | t.forward(80) 140 | 141 | # 左边的胡子 142 | t.pu() 143 | t.home() 144 | t.goto(0,124) 145 | t.pensize(3) 146 | t.pencolor('black') 147 | t.pd() 148 | t.left(170) 149 | t.forward(80) 150 | 151 | t.pu() 152 | t.home() 153 | t.goto(0, 114) 154 | t.pensize(3) 155 | t.pencolor('black') 156 | t.pd() 157 | t.left(174) 158 | t.forward(80) 159 | 160 | t.pu() 161 | t.home() 162 | t.goto(0, 104) 163 | t.pensize(3) 164 | t.pencolor('black') 165 | t.pd() 166 | t.left(180) 167 | t.forward(80) 168 | 169 | t.pu() 170 | t.goto(-70, 70) 171 | t.pd() 172 | t.color('black', 'red') 173 | t.pensize(6) 174 | t.seth(-60) 175 | t.begin_fill() 176 | t.circle(80,40) 177 | t.circle(80,80) 178 | t.end_fill() 179 | 180 | t.pu() 181 | t.home() 182 | t.goto(-80,70) 183 | t.pd() 184 | t.forward(160) 185 | 186 | t.pu() 187 | t.home() 188 | t.goto(-50,50) 189 | t.pd() 190 | t.pensize(1) 191 | t.fillcolor("#eb6e1a") 192 | t.seth(40) 193 | t.begin_fill() 194 | t.circle(-40, 40) 195 | t.circle(-40, 40) 196 | t.seth(40) 197 | t.circle(-40, 40) 198 | t.circle(-40, 40) 199 | t.seth(220) 200 | t.circle(-80, 40) 201 | t.circle(-80, 40) 202 | t.end_fill() 203 | 204 | # 领带 205 | t.pu() 206 | t.goto(-70, 12) 207 | t.pensize(14) 208 | t.pencolor('red') 209 | t.pd() 210 | t.seth(-20) 211 | t.circle(200, 30) 212 | t.circle(200, 10) 213 | 214 | # 铃铛 215 | t.pu() 216 | t.goto(0, -46) 217 | t.pd() 218 | t.pensize(3) 219 | t.color("black", '#f8d102') 220 | t.begin_fill() 221 | t.circle(25) 222 | t.end_fill() 223 | 224 | 225 | t.pu() 226 | t.goto(-5, -40) 227 | t.pd() 228 | t.pensize(2) 229 | t.color("black", '#79675d') 230 | t.begin_fill() 231 | t.circle(5) 232 | t.end_fill() 233 | 234 | t.pensize(3) 235 | t.right(115) 236 | t.forward(7) 237 | 238 | t.mainloop() -------------------------------------------------------------------------------- /處理excel/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/.DS_Store -------------------------------------------------------------------------------- /處理excel/censuspopdata.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/censuspopdata.xlsx -------------------------------------------------------------------------------- /處理excel/dimensions.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/dimensions.xlsx -------------------------------------------------------------------------------- /處理excel/example.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/example.xlsx -------------------------------------------------------------------------------- /處理excel/example_copy.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/example_copy.xlsx -------------------------------------------------------------------------------- /處理excel/freezeExample.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/freezeExample.xlsx -------------------------------------------------------------------------------- /處理excel/images/pic1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/images/pic1.png -------------------------------------------------------------------------------- /處理excel/images/pic2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/images/pic2.png -------------------------------------------------------------------------------- /處理excel/images/pic3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/images/pic3.png -------------------------------------------------------------------------------- /處理excel/images/pic4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/images/pic4.png -------------------------------------------------------------------------------- /處理excel/images/pic5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/images/pic5.png -------------------------------------------------------------------------------- /處理excel/images/pic6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/images/pic6.png -------------------------------------------------------------------------------- /處理excel/merged.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/merged.xlsx -------------------------------------------------------------------------------- /處理excel/produceSales.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/produceSales.xlsx -------------------------------------------------------------------------------- /處理excel/sampleChart.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/sampleChart.xlsx -------------------------------------------------------------------------------- /處理excel/styles.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/styles.xlsx -------------------------------------------------------------------------------- /處理excel/updateProduceSales.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/updateProduceSales.xlsx -------------------------------------------------------------------------------- /處理excel/writeFormula.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/writeFormula.xlsx -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-701(新竹縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-701(新竹縣).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-702(苗栗縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-702(苗栗縣).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-703(彰化縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-703(彰化縣).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-704(南投縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-704(南投縣).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-705(雲林縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-705(雲林縣).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-706(嘉義縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-706(嘉義縣).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-707(屏東縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-707(屏東縣).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-708(宜蘭縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-708(宜蘭縣).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-709(花蓮縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-709(花蓮縣).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-710(臺東縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-710(臺東縣).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-711(澎湖縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-711(澎湖縣).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-712(基隆市).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-712(基隆市).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-713(新竹市).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-713(新竹市).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-714(嘉義市).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-714(嘉義市).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-801(金門縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-801(金門縣).xls -------------------------------------------------------------------------------- /處理excel/縣市長/縣表3-1-802(連江縣).xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roberthsu2003/python/d415994ebd7a9e4a710f38a95745a676e40d4758/處理excel/縣市長/縣表3-1-802(連江縣).xls -------------------------------------------------------------------------------- /重複執行/commonfactor.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | """ 4 | *問題 commonfactor.py 5 | 設計一個程式,可以由鍵盤輸入兩個數值,並求出這2個數值的最大公因數和最小公倍數 6 | 7 | 顯示====================================== 8 | 求兩數的最大公因數和最小公倍數 9 | 請輸入第一個整數:XXX 10 | 請輸入第二個整數:XXX 11 | 12 | 計算結果: 13 | 14 和 35 的最大公因數:7 14 | 14 和 35 的最小倍數是:70 15 | 16 | """ 17 | 18 | print('求兩數的最大公因數和最小公倍數') 19 | n = int(input('請輸入第一個整數:')) 20 | m = int(input('請輸入第二個整數:')) 21 | 22 | if(n>m): 23 | max = n 24 | min = m 25 | else: 26 | max = m 27 | min = n 28 | 29 | for num in range(min): 30 | num += 1 31 | if((min % num) == 0 and (max % num) == 0): 32 | maxResult = num 33 | 34 | minResult = (n / maxResult) * (m / maxResult) * maxResult 35 | 36 | print('{0:d}和{1:d}的最大公因數:{2:d}'.format(n,m,maxResult)) 37 | print('{0:d}和{1:d}的最小公倍數:{2:.0f}'.format(n,m,minResult)) 38 | 39 | 40 | -------------------------------------------------------------------------------- /重複執行/continue.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | ''' 4 | #continue.py 5 | #請設計一個程式,讓使用者輸入數值,只有加總正偶數值,不加總正奇數值,如果輸入負數,結束程式。 6 | 7 | 顯示:======================================== 8 | 請輸入第1個數值:456 9 | 請輸入第2個數值:455 10 | 請輸入第3個數值:123 11 | 請輸入第4個數值:-1 12 | 所有輸入的正偶數的加總是:xxxxxxx 13 | ============================================= 14 | 15 | ''' 16 | 17 | num = 0 18 | sum = 0 19 | while(True): 20 | num += 1 21 | inputNum = int(input("請輸入第"+ str(num) + "個數值:")) 22 | if(inputNum < 0): 23 | break 24 | elif (inputNum % 2 == 1): 25 | continue 26 | else: 27 | sum += inputNum 28 | print("所有輸入的正偶數的加總是:", sum) 29 | 30 | -------------------------------------------------------------------------------- /重複執行/forNest2.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | #======================================================================= 4 | # Name : forNest2.py 5 | #利用2層迴圈列印九九乘法表 6 | #======================================================================= 7 | 1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 8 | 2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 9 | 3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 10 | 4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 11 | 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 12 | 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54 13 | 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63 14 | 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 15 | 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 16 | ''' 17 | 18 | for i in range(1,10): 19 | for j in range(1,10): 20 | print(i, " * ", j, " = ", i*j, end='\t') 21 | print() 22 | -------------------------------------------------------------------------------- /重複執行/fornest1.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | ''' 4 | #======================================================== 5 | # Name : forNest1.py 6 | #利用2層迴圈列印「井」字,將其排列成直角三角形 7 | #======================================================= 8 | 9 | 顯示: 10 | # 11 | ## 12 | ### 13 | #### 14 | ##### 15 | ''' 16 | 17 | for i in range(1,6): 18 | for _ in range(i): 19 | print("#",end='') 20 | print() 21 | -------------------------------------------------------------------------------- /重複執行/guess.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 4 | # Name : guess.py 5 | #猜數字遊戲 6 | 7 | 顯示: 8 | 猜數字範圍1-100:50 9 | 10 | 再小一點! 11 | 猜數字範圍1-50:20 12 | 13 | 再大一點! 14 | 猜數字範圍20-50:34 15 | 16 | 賓果!猜對了,答案是34 17 | 您猜了5次 18 | 19 | 20 | ''' 21 | 22 | import random 23 | min = 1 24 | max = 100 25 | count = 0 26 | target = random.randint(1, 100) 27 | print("===============猜數字遊戲=================:\n") 28 | while(True): 29 | count += 1 30 | keyin = int(input("猜數字範圍{0}~{1}:".format(min, max))) 31 | if(keyin >=min and keyin <= max): 32 | if(keyin == target): 33 | print("賓果!猜對了, 答案是:", target) 34 | print("您猜了",count,"次") 35 | break 36 | elif (keyin > target): 37 | max = keyin 38 | print("再小一點") 39 | elif (keyin < target): 40 | min = keyin 41 | print("再大一點") 42 | print("您猜了",count,"次\n") 43 | else: 44 | print("請輸入提示範圍內的數字") 45 | -------------------------------------------------------------------------------- /重複執行/inputLoop.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | """ 4 | *問題 inputLoop.py 5 | #設計一個程式,使用者輸入一個M, 再輸入另一個數N,然後程式可以求出M*1 + M*2 + M*3 + M*4 + M*5....... + M*N的值 6 | 7 | 顯示========================== 8 | 輸入M:5 9 | 輸入N:4 10 | M*1 + M*2 + M*3 + ......+ M*N = 50 11 | """ 12 | 13 | m = int(input('輸入M:')) 14 | n = int(input('輸入N:')) 15 | sum = 0 16 | for num in range(n): 17 | num += 1 18 | if num != n: 19 | print(m,'*',num,' + ',end='') 20 | else: 21 | print(m,'*',num,' = ',end='') 22 | 23 | sum += m * num 24 | 25 | print(sum) -------------------------------------------------------------------------------- /重複執行/loop1.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | """ 4 | 2 - 10所有偶數的總和 5 | 6 | 第 1.0 次迴圈的i = 2 總和為 2 7 | 第 2.0 次迴圈的i = 4 總和為 6 8 | 第 3.0 次迴圈的i = 6 總和為 12 9 | 第 4.0 次迴圈的i = 8 總和為 20 10 | 第 5.0 次迴圈的i = 10 總和為 30 11 | """ 12 | 13 | sum = 0 14 | i = 2 15 | while(i <= 10): 16 | sum += i 17 | print("第",i/2,"次迴圈的i =",i,"總和為", sum); 18 | i += 2 19 | -------------------------------------------------------------------------------- /重複執行/loop2.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | 計算固定中的支出,媽媽每天會將家裡的花費記錄下來,並且計算本週的花費總和 4 | 5 | 顯示: 6 | 請輸入星期1 的支出567 7 | 請輸入星期2 的支出456 8 | 請輸入星期3 的支出567 9 | 請輸入星期4 的支出890 10 | 請輸入星期5 的支出345 11 | 請輸入星期6 的支出534 12 | 請輸入星期日 的支出678 13 | 本星期的支出為:4037元 14 | ''' 15 | sum=0; 16 | i=1; 17 | while (True): 18 | if (i<7): 19 | output='請輸入星期'+str(i)+'的花費:' 20 | n=int(input(output)) 21 | elif(i==7): 22 | n=int(input("請輸入星期日的花費:")) 23 | sum += n 24 | i += 1 25 | print(f'本星期的支出為{sum}元') 26 | 27 | -------------------------------------------------------------------------------- /重複執行/nestedLoop1.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | *問題 nestedLoop1.py 4 | 試寫出下列數字排列的程式 5 | 顯示================================= 6 | 7 | 55555 8 | 4444 9 | 333 10 | 22 11 | 1 12 | 13 | ''' 14 | 15 | for i in range(5,0,-1): 16 | for j in range(i): 17 | print(i,end='') 18 | print() 19 | -------------------------------------------------------------------------------- /重複執行/range1.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | #range1.py 4 | #小王班上有五位學生,請您為小王設計一個輸入成績的程式,並且在輸入成績後顯示班上總成績及平均成績。 5 | 6 | 顯示: 7 | 請輸入第1位學生的成績:89 8 | 請輸入第2位學生的成績:89 9 | 請輸入第3位學生的成績:89 10 | 請輸入第4位學生的成績:89 11 | 請輸入第5位學生的成績:89 12 | 13 | 全班總成績為: ***分,平均為89分 14 | 15 | ''' 16 | 17 | sum = 0 18 | students = 5 19 | for i in range(students): 20 | studentScore = int(input('請輸入第'+ str(i+1) +'位學生的成績:')) 21 | sum += studentScore 22 | 23 | print("全班總成績為:" + str(sum) + "分,平均分數為" + str(sum/students) + "分") 24 | -------------------------------------------------------------------------------- /重複執行/various_loop1.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | ''' 3 | #various_loop1.py 4 | 5 | 以for迴圈計算1到100的和 6 | 顯示================= 7 | 1+2+3+~+100的總合是5050 8 | ''' 9 | sum = 0 10 | for i in range(100): 11 | i += 1 12 | if(i != 100): 13 | print(i,"+", end='') 14 | sum += i 15 | continue 16 | print(i," = ", end='') 17 | sum += i 18 | 19 | print(sum) 20 | -------------------------------------------------------------------------------- /重複執行/various_loop2.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | ''' 4 | *問題 various_loop2.py 5 | 以while迴圈計算1到100的和 6 | 7 | 顯示============ 8 | 1+2+3+~+100的總合是5050 9 | ''' 10 | 11 | sum = 0 12 | i = 1 13 | while(i <= 100): 14 | 15 | if(i != 100): 16 | print(i,"+",end='') 17 | else: 18 | print(i,"=",end='') 19 | 20 | sum += i 21 | i += 1 22 | print("的總合是",sum) -------------------------------------------------------------------------------- /重複執行/while1_s.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | ''' 4 | #while1_s.py 5 | #小美是一位教師,請你以while迴圈方式為小美設計一個輸入成績的程式,如果輸入負數表示成績輸入結束,在輸#入成績結束後顯示班上總成績及平均成績。 6 | 7 | #顯示=============== 8 | 請輸入第1位學生的成績:89 9 | 請輸入第2位學生的成績:78 10 | 請輸入第3位學生的成績:68 11 | 請輸入第4位學生的成績:89 12 | 全班總成績為:XXX分, 平均為XX.XX分 13 | #========================================= 14 | ''' 15 | 16 | num = 0 17 | sum = 0 18 | while(True): 19 | num += 1 20 | score = int(input('請輸入第'+ str(num) + "學生的成績:")) 21 | if(score < 0): 22 | break 23 | 24 | sum += score 25 | print("全班總成績為:", sum, "平均分數為:", "%.2f" % (sum/num)) -------------------------------------------------------------------------------- /重複執行/while2.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | ''' 4 | #============================================================================ 5 | # Name : while2.py 6 | #小明想要存錢買一輛機車,機車每輛30000元,他將每月存的錢輸入,當存款足夠買機車時,就顯示提示訊息告知。 7 | #============================================================================ 8 | 9 | 顯示: 10 | 請輸入第1個月份的存款:4567 11 | 請輸入第2個月份的存款:3456 12 | 請輸入第3個月份的存款:4567 13 | 請輸入第4個月份的存款:4567 14 | 請輸入第5個月份的存款:4567 15 | 請輸入第6個月份的存款:5678 16 | 請輸入第7個月份的存款:7890 17 | 恭喜! 已經存夠了,存了7個月的總存款為:35292元。 18 | ''' 19 | 20 | deposit = 0 21 | num = 0 22 | while(deposit < 30000): 23 | num += 1 24 | inputNum = int(input('請輸入第'+str(num)+"個月份的存款:")) 25 | deposit += inputNum 26 | 27 | print("恭喜!已經存夠了,存了",num,"個月的總存款為:",deposit,"元。") -------------------------------------------------------------------------------- /重複執行/wordLink.py: -------------------------------------------------------------------------------- 1 | #!usr/bin/python3 2 | 3 | """ 4 | 字串文字接龍 5 | """ 6 | print('失敗就會退出遊戲!') 7 | inputString = input('請輸入一個字串:') 8 | sampleString = 'wordlink' 9 | for single in sampleString: 10 | print('上一個字串是:',inputString) 11 | outputWords = "請輸入-",single,"-開始的字串" 12 | keyin = input(outputWords) 13 | if keyin[0] != single: 14 | print('遊戲失敗') 15 | print('您輸入的字串是:',inputString) 16 | break 17 | inputString += '-' + keyin 18 | else: 19 | print('恭喜!成功完成遊戲') 20 | print('您輸入的字串是:',inputString) 21 | --------------------------------------------------------------------------------