--- tags: Python, Class --- ### 課後練習 猜數字 由電腦產生一組4位不重複的數字,使用者可以輸入任意4位數字 規則 如果數字正確但是位置錯誤以B呈現 如果數字正確且位置正確則顯示A 範例:電腦數字 1234 使用者輸入 4321 電腦顯示 0A4B 使用者輸入 0123 電腦顯示 0A3B 使用者輸入 1289 電腦顯示 2A0B 直到使用者猜對,並顯示使用者猜了幾次 [ChatGPT](https://chat.openai.com/) # Python 課程講義 ## 行前準備 下載下列項目 1. [Visual Studio code](https://vscode.download.prss.microsoft.com/dbazure/download/stable/0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2/VSCodeUserSetup-x64-1.85.1.exe) 2. [Anaconda](https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Windows-x86_64.exe) --- 選用 *版本管理* 1. [git](https://git-scm.com/download/win) 2. [github](https://github.com/) -> 先行註冊該網站 --- 輔助文件 1. [notepad++](https://github.com/notepad-plus-plus/notepad-plus-plus/releases/download/v8.6.1/npp.8.6.1.Installer.x64.exe) ## 何謂寫程式? ### 修改副檔名 #### 副檔名 副檔名(Filename Extension,或作延伸檔名、字尾名)是早期作業系統(如VMS/CP/M/DOS等)用來標誌檔案格式的一種機制。以DOS來說,一個副檔名是跟在主檔名後面的,由一個分隔符號分隔。在一個像「example.txt」的檔名中,example是主檔名,txt為副檔名,表示這個檔案是一個純文字檔案,句號「.」就是主檔名與副檔名的分隔符號。 使windows顯示副檔名 ![image](https://hackmd.io/_uploads/Hy8whd-Sa.png) 取消勾選該項目 ![image](https://hackmd.io/_uploads/HyncnuWST.png) ### 創建文件 ![image](https://hackmd.io/_uploads/BJnahdWra.png) 開啟終端機 ![image](https://hackmd.io/_uploads/S1WypuZra.png) 變更目錄 ```bat= cd [你要的資料夾] python test.py ``` 透過python 呼叫你要的程式碼 ```cmd= python [filename.py] ``` 透過 `python`指令呼叫**特定路徑**的**特定程式碼** --- ![image](https://hackmd.io/_uploads/B1oBwtWHp.png) ## 利用更方便的工具 ### 利用Visual Studio code 開啟指定資料夾 ![image](https://hackmd.io/_uploads/SkN8_FbrT.png) 點開終端機 ![image](https://hackmd.io/_uploads/HktduKWHp.png) 執行程式碼 ![image](https://hackmd.io/_uploads/rkKGOKbBp.png) ### 常用套件 - [python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) 語法高亮 - [isort](https://marketplace.visualstudio.com/items?itemName=ms-python.isort) - [Tabnine](https://marketplace.visualstudio.com/items?itemName=TabNine.tabnine-vscode) AI補完需要github帳號 - [Excel Viewer](https://marketplace.visualstudio.com/items?itemName=GrapeCity.gc-excelviewer) Excel 閱讀器 - [美觀圖示](https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme) - [主題](https://marketplace.visualstudio.com/items?itemName=zhuangtongfa.Material-theme) --- ## Conda 簡介 開發 #python 專案時,最常遇見的問題就是不同專案可能會有不同的`Python`版本以及不同的`package`需要安裝,那麼在管理上就會是一個問題了。如果希望再電腦內快速佈署不同的方案或是版本套件等,那[Anaconda](https://www.anaconda.com/products/individual)的套件管理系統conda將會是值得使用的系統。 `conda`命令是管理在安裝不同`package`時的主要介面,使用`conda`時,可以針對不同**Python**版本及**Packages**,進行以下動作 - 建立環境(`create`) - 輸出環境(`export`) - 列出套件(`list`) - 移除環境(`remove`) - 更新環境(`update`) ## Anaconda 安裝方法 Anaconda 其實是一款私人企業所維護的套件管理程式,其中使用該套件管理程式最大的優勢在於,可以用該軟體提供的GUI進行環境管控,對於不熟悉*command line*的使用者來說,是快速上手的好幫手。 安裝方式很簡單,首先到[官方網站下載](https://www.anaconda.com/products/individual#Downloads),選擇自己電腦符合的版本與作業系統,並且依照步驟進行安裝,其中過程當中會出現下列圖片 ![新增變量](https://github.com/edwardhome/Notebook/blob/main/picture/install_anaconda.png?raw=true) 這邊建議直接勾選新增,可節省後續的設定。 ### 確認 conda 的版本 再安裝完成conda後可以透過命令提示字元進行版本確認,指令碼如下: ``` conda -V ``` 結果如下圖所示: ![版本確認](https://github.com/edwardhome/Notebook/blob/main/picture/conda_version.jpg?raw=true) ## 更新conda 完成安裝後,最重要的就是先進行更新動作,確認conda 再最新版本 指令如下: ``` conda update conda ``` 這時候conda 會列出所有需要更新的套件並詢問是否更新,這時候再文字列打入`y`即可。 ## 用conda建立python環境 接下來,要利用conda 建立一個新的python的環境 首先先利用這個指令列出目前已經安裝的環境 ``` conda env list ``` 預設應該有一組`base`,並且前面打一個\*字號表示為預設。 此時,可利用`create`指令建立一個新的環境,並且指定他的python 版本 指令如下: ``` conda create --name [名稱] python=[版本] ``` 此時我們可以再利用剛剛前面所提到的`env list` 這個指令,確認是否有成功創建這個新的環境。 若有成功產生,可利用下面指令進行環境切換 ``` conda activate [名稱] ``` 這時候,應該可以看到命令提示字元的路徑前面出現一個小括號\( \),裡面即是命名的環境 ### 安裝套件 安裝套件是python的一個重要功能,相關的套件都可以透過[import](python_import語句)指令進行呼叫,但是不同版本的套件或是python可能會有所衝突,這時候將環境分隔開來便可以有效的管理,不會因為某個程式的套件與某套件產生衝突,使得需要降低版本或是升級,而一旦執行這個命令又會導致其他已經完成或正在撰寫的python產生問題,因此利用**conda**進行管理是十分有幫助的。 指令如下: ``` conda install [套件名稱] ``` 使用conda進行套件安裝有個好處,他會自動幫使用者把相依套件進行統一的打包下載。 ### 列出套件 利用下列指令可以列出目前環境下的所有套件 ``` conda list ``` 大概會長的像這樣 Name | Version | Build | Channel :------:|:--------:|:-----:|:---------: numpy | 1.18.5 | pypi_0 | pandas | 1.1.3 | py37ha925a31_0 | opencv | 3.4.2 | py37h40b0b35_0 | 將所有的套件與版本及內容詳列出來。 ### 更新套件 更新所有套件 ``` conda upgrade -y --all ``` 更新指定套件 ``` conda upgrade [套件名稱] ``` ### 移除套件 ``` conda remove [套件名稱] ``` 這樣就可以移除所選套件了。 ## 移除環境 如果最後要移除環境及所有安裝在此環境下的套件,可使用下列指令 ``` conda env remove --name [環境名稱] ``` 如此一來,就可以整個環境了 ## 匯入與匯出環境 最後要介紹的是將整個已經使用完成的環境給輸出成[副檔名](副檔名)為yaml的檔案 ``` conda env export --name [環境名稱] --file [路徑\檔名.yaml] ``` 變會在指定的路徑輸出一個yaml檔案,以供未來的其他機台匯入使用 ```yaml name: cv channels: - defaults dependencies: - blas=1.0=mkl - ca-certificates=2020.10.14=0 - certifi=2020.6.20=pyhd3eb1b0_3 - hdf5=1.8.20=hac2f561_1 - icc_rt=2019.0.0=h0cc432a_1 - intel-openmp=2020.2=254 - jpeg=9b=hb83a4c4_2 - libopencv=3.4.2=h20b85fd_0 - libpng=1.6.37=h2a8f88b_0 - 以下省略.... prefix: C:\Users\user\anaconda3\envs\cv ``` 而往後如果要將這個環境套用到新的主機或是設備中,則可以配合前面題過得`create`指令進行 詳細如下: ``` conda env create --file [路徑\名稱.yaml] --name [環境名稱] ``` 如此一來就不怕已經完成的程式碼到其他機台的環境無法使用了 可以直接再其他有安裝conda的機台中直接完全移植目前的使用環境 ### 安裝時未選取 Add anaconda to my PATH... 右鍵點選**本機**選取**內容** ![image](https://hackmd.io/_uploads/Hk96dAiuT.png) 選取 **進階系統設定** ![image](https://hackmd.io/_uploads/SyNyYAida.png) 選取 **環境變數** ![image](https://hackmd.io/_uploads/r1WWF0iu6.png) 選取 **PATH** 並點選 **編輯** ```= C:\Users\[使用者資料夾]\anaconda3\Library\mingw-w64\bin C:\Users\[使用者資料夾]\anaconda3\Library\usr\bin C:\Users\[使用者資料夾]\anaconda3\Library\bin C:\Users\[使用者資料夾]\anaconda3\Scripts ``` 其中 `[使用者資料夾]` 請依據自己的電腦設定選取 若安裝路徑不同請依據自己的安裝路徑處理,新增`PATH`使終端機可以呼叫`conda`指令。 ## 延伸閱讀 [Python 簡介](https://hackmd.io/@defu/python) [使用Window內建之Powershell](https://hackmd.io/l2Ps3GAiQ4GMOpeo59Mkhg)