<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>從零開始學Python on 跟著 Desolve 學程式</title><link>https://learnwithdesolve.netlify.app/series/%E5%BE%9E%E9%9B%B6%E9%96%8B%E5%A7%8B%E5%AD%B8python/</link><description>Recent content in 從零開始學Python on 跟著 Desolve 學程式</description><generator>Hugo -- gohugo.io</generator><language>zh-tw</language><lastBuildDate>Thu, 15 Oct 2020 00:00:00 +0800</lastBuildDate><atom:link href="https://learnwithdesolve.netlify.app/series/%E5%BE%9E%E9%9B%B6%E9%96%8B%E5%A7%8B%E5%AD%B8python/index.xml" rel="self" type="application/rss+xml"/><item><title>從零開始學Python (30) — 結語：少年啊，要忍耐，撐過熬過總算苦盡甘來</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-30-epilog/</link><pubDate>Thu, 15 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-30-epilog/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (30) — 結語：少年啊，要忍耐，撐過熬過總算苦盡甘來" />&lt;h2 id="day-30-結語少年啊要忍耐撐過熬過總算苦盡甘來">Day 30 結語：少年啊，要忍耐，撐過熬過總算苦盡甘來
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10247306" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10247306&lt;/a>&lt;/p>
&lt;p>終於是最後一天了！！！&lt;br>
又來到了輕鬆聊的時間。&lt;br>
坦白說這次的30天過得並不輕鬆，&lt;br>
除了一些外務需要處理外，一開始也是從沒有存稿的狀態下開始的。&lt;br>
每天被進度追著打的感覺實在是很累XD！&lt;/p>
&lt;p>寫這一系列文章的初衷，&lt;br>
最初是因為看到自己的學生們，&lt;br>
因為從&lt;strong>LeetCode學演算法系列文章&lt;/strong> 找到了我，&lt;br>
但很多卻是想要轉職但對Python不熟的同學。&lt;br>
不，應該是說對於整個程式語言該從哪裡開始都不清楚。&lt;br>
通常這樣的狀況下，我們會從各種巨X電腦、O成電腦，&lt;br>
或各種線上學院開始先學基本的程式語言。&lt;br>
問題來了：&lt;br>
就算是同一家電腦甚至是資策會，&lt;br>
&lt;strong>一來學費挺貴的，二來師資有所落差，風格也各有不一，&lt;br>
沒有人能保證自己一開始遇到的老師就是最適合自己的。&lt;/strong>&lt;/p>
&lt;p>所以，建構一個&lt;strong>基礎&lt;/strong> 的系列文章教學，&lt;br>
內容不要像X者歸來那樣子又厚又重，&lt;br>
並且範例不要千篇一律讓讀者容易失去興趣，&lt;br>
是一件非常重要的事情。&lt;/p>
&lt;p>如果拿這一系列文章和書籍相比，&lt;br>
讀者可能會發現，有很多東西是被筆者略過的：&lt;br>
例如我們沒有講到&lt;strong>匿名函式(lambda function)&lt;/strong> ，&lt;br>
也沒有講到&lt;strong>namedtuple&lt;/strong> ；&lt;br>
沒有講到&lt;strong>pdf和xls的檔案處理，以及另一個數據分析的好用工具pandas&lt;/strong> ；&lt;br>
沒有講到&lt;strong>OpenCV&lt;/strong> (可能比PIL更容易被用到，而且支援跨平台)；&lt;br>
沒有講到&lt;strong>網路連線相關的模組&lt;/strong> ；&lt;br>
也沒有講到&lt;strong>多執行緒/多處理程序(multi-threading/multi-processing)&lt;/strong> 。&lt;/p>
&lt;p>並不是它們不重要，而是筆者認為，&lt;br>
對於初學者而言，重點不是每一個都聽過摸過，&lt;br>
而是能先&lt;strong>使用既有基本的東西，並且從它們當中，&lt;br>
組合出自己想要的程式。&lt;/strong>&lt;br>
在這個過程中，&lt;strong>有遇到任何問題，&lt;br>
就去查資料、文件檔，或者向人請教提問，&lt;br>
將自己需要的知識不斷補足完善，這才是筆者希望看到的。&lt;/strong>&lt;/p>
&lt;p>讓我們簡單回顧一下這三十天學了什麼，&lt;br>
以及再深入的話，可以再往哪個方向了解：&lt;br>
&lt;strong>1. Python的安裝&lt;/strong> ，除了本文提到的方式外，&lt;br>
另外還有Anaconda/pipenv等，&lt;br>
對於需要架構乾淨的多個執行環境而言蠻重要的，&lt;br>
同時也可以建構jupyter notebook，&lt;br>
使用iPython的以方格為單位的執行。&lt;/p>
&lt;p>&lt;strong>2. 變數、型態、運算子的部分，&lt;/strong>&lt;br>
其實還有很多跟位元運算有關的處理以及技巧，&lt;br>
如果在寫題目遇到跟bit相關的東西的時候會很常用；&lt;br>
字串也帶有許多好用的方法可以運用，&lt;br>
同時還有&lt;strong>使用正規表達式(regular expression)來搜尋字串&lt;/strong> 的方法，&lt;br>
這個比較易學難精，有興趣可以再深入了解。&lt;/p>
&lt;p>&lt;strong>3. 進階的資料型態&lt;/strong> ，記得我們的炸蝦嗎XD?&lt;br>
字典、串列、集合、元組的應用相當廣泛，&lt;br>
有一些東西和方法可能沒有詳列上去，&lt;br>
讀者可以遇到狀況時先查查有沒有可以用的對應內建方法呦！&lt;/p>
&lt;p>&lt;strong>4. 程式結構及語法&lt;/strong> ，包含了if, for, while等，&lt;br>
應該算是最基礎的東西了，這當中應該唯有搭配Except的部分比較特殊，&lt;br>
再請多加留意。&lt;/p>
&lt;p>&lt;strong>5. 例外處理和遞迴&lt;/strong> ，有關遞迴的處理速度和記憶體問題，&lt;br>
文章有更新一位在「程式人雜誌」社團的讀者提供的深入探討，&lt;br>
讀者可以再行參閱。&lt;/p>
&lt;p>&lt;strong>6. 模組與套件&lt;/strong> ，關於其讀取的部分，其實有一些更細部的規則，&lt;br>
若想要建構比較嚴謹的大型程式的話，請再搜尋相關的文章。&lt;/p>
&lt;p>&lt;strong>7. 標準程式庫&lt;/strong> ，其實還有很多很多很多XD，&lt;br>
建議讀者可以參照著Python的官方文件，&lt;br>
可以針對需求看有沒有自己需要的東西。&lt;/p>
&lt;p>&lt;strong>8. 物件與類別，&lt;/strong>&lt;br>
是所有物件導向程式語言(OOP, Object-Oriented Programming)&lt;br>
當中很重要的一環，當中的概念請務必好好理解清楚，&lt;br>
在使用時才不容易混淆。&lt;/p>
&lt;p>&lt;strong>9. 檔案讀寫，&lt;/strong>&lt;br>
除了一般文字檔、CSV、JSON外，&lt;br>
XML/YAML也是常用的格式；除此之外，了解HTML的格式，&lt;br>
將有利於有志朝網頁爬蟲相關技巧學習的讀者。&lt;br>
若以爬蟲而言，&lt;strong>beautifulsoup, scrapy, request, selenium&lt;/strong> 可能是重要的關鍵字。&lt;/p>
&lt;p>&lt;strong>10. 日期時間、圖形處理、GUI介面等，&lt;/strong>&lt;br>
都算是Python內建好用的模組，尤其對於Tkinter而言，&lt;br>
也有很多其他的模組可以取代或者讓它變更好用。&lt;/p>
&lt;p>&lt;strong>11. 其他常用的資料結構相關模組&lt;/strong> ，可以搭配著演算法學習，&lt;br>
效果會更好，最好搭配筆者的從&lt;a class="link" href="https://medium.com/@desolution" target="_blank" rel="noopener"
>LeetCode學演算法&lt;/a>系列XD&lt;/p>
&lt;p>&lt;strong>12. 科學運算、繪圖及深度學習，&lt;/strong>&lt;br>
是走向AI/資料科學的敲門磚，後續還有更多更深入的東西可以玩的，&lt;br>
有興趣的讀者若想要走AI相關領域，&lt;br>
建議可以從吳恩達/李宏毅/林軒田等大師的機器學習課程開始，&lt;br>
如果想要先了解一點基礎簡單的深度學習框架，&lt;br>
閱讀&lt;a class="link" href="https://mofanpy.com/" target="_blank" rel="noopener"
>莫煩Python&lt;/a>的系列教學也不錯！&lt;/p>
&lt;p>&lt;strong>13. 其他沒有提到的如Python+Flask(前端)，&lt;/strong>&lt;br>
&lt;strong>Python+SQLite/MongoDB/Redis(後端)等，&lt;/strong>&lt;br>
如果讀者扎扎實實地經過這三十天的練習，&lt;br>
應該會擁有進一步透過網路文章資源來學習這些的能力，&lt;br>
就再請大家針對需求去搜尋囉！&lt;/p>
&lt;p>除此以外，&lt;strong>每天的副標題&lt;/strong> ，&lt;br>
其實都跟當天要講的內容有關聯性，&lt;br>
並不單純只是梗或者是歌詞而已，&lt;br>
若讀者可以有效地&lt;strong>將文章內容和副標題連結上&lt;/strong> ，&lt;br>
相信能更理解文章所要表達的內容。&lt;/p>
&lt;p>最後，不免幫自己工商一下：&lt;br>
筆者目前除了從LeetCode學演算法的線上課程外，&lt;br>
也和幾位朋友成立一個團隊，名為&lt;strong>Chill Cat(去憂貓)&lt;/strong> ，&lt;br>
當前正在鑽研&lt;strong>AI輔助心理諮商&lt;/strong> 的部分；&lt;br>
同時我們也有經營有關&lt;strong>AI智能化交易指標&lt;/strong> 的研究，&lt;br>
(可以是&lt;strong>MetaTrader&lt;/strong> ，也可以是別的XD)&lt;br>
以及&lt;strong>協助企業評估/導入AI或自動化&lt;/strong> 的可能。&lt;br>
&lt;strong>歡迎有興趣合作或委託開發的諮商師、心理師，&lt;br>
以及公司行號和我聯絡。&lt;/strong>&lt;br>
來信請寄：&lt;strong>&lt;a class="link" href="mailto:bbsc.aiteam@gmail.com" >bbsc.aiteam@gmail.com&lt;/a>&lt;/strong> 。&lt;/p>
&lt;p>平常的時候，若對於LeetCode解題感興趣，&lt;br>
還是可以在&lt;strong>FB的Python Taiwan社團&lt;/strong> ，&lt;br>
或&lt;a class="link" href="https://medium.com/@desolution" target="_blank" rel="noopener"
>我的Medium&lt;/a>上看到我！&lt;br>
也可以來追蹤我的粉專：&lt;a class="link" href="https://www.facebook.com/learnwithdesolve/" target="_blank" rel="noopener"
>跟著Desolve學程式&lt;/a>，&lt;br>
裡面會不定時分享一些程式相關的文章或資訊呦！&lt;/p>
&lt;p>感謝大家的收看，那我們明年……&lt;br>
等一下，先不要，先不要XD&lt;br>
我再考慮看看啦XDDD!&lt;br>
就這樣，掰掰~&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/leetcodeadv" target="_blank" rel="noopener"
>https://bit.ly/leetcodeadv&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/leetcodeall" target="_blank" rel="noopener"
>https://bit.ly/leetcodeall&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (29) — 打包安裝PyInstaller：誰把誰的靈魂，裝進誰的身體</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-29-packaging-installation-pyinstaller/</link><pubDate>Wed, 14 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-29-packaging-installation-pyinstaller/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (29) — 打包安裝PyInstaller：誰把誰的靈魂，裝進誰的身體" />&lt;h2 id="day-29-打包安裝pyinstaller誰把誰的靈魂裝進誰的身體">Day 29 打包安裝PyInstaller：誰把誰的靈魂，裝進誰的身體
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10247305" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10247305&lt;/a>&lt;/p>
&lt;p>因為按照慣例，第三十天主要會講比較偏向結論性質的東西，&lt;br>
包含接下來可能的學習方向以及建議，&lt;br>
所以讓我們今天用PyInstaller來做技術方面的最後一章，&lt;br>
恭喜各位讀者，這系列如果都有扎實的跟上的話，&lt;br>
應該能對Python有一些基本的認識。&lt;/p>
&lt;p>PyInstaller是一個用來打包安裝Python檔案的函式庫，&lt;br>
一般狀況下，使用pip可以輕鬆將其安裝：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>pip install pyinstaller
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>為什麼我們會需要PyInstaller呢?&lt;br>
一般狀況下有幾個可能：&lt;/p>
&lt;ol>
&lt;li>你不想直接讓別人看到程式碼(註：但會破解的還是做得到XD)&lt;/li>
&lt;li>你在開發過程中用了一些函式庫，&lt;br>
這些函式庫並非內建的，從而別人要用你的.py檔執行的話，&lt;br>
會需要進行其它的pip install或準備工作。&lt;br>
這樣很麻煩很不方便，&lt;br>
你希望拿到的人最好可以滑鼠點兩下就可以執行才對XD&lt;/li>
&lt;/ol>
&lt;p>這時候使用PyInstaller就可以達成這樣的目的，&lt;br>
除了可以給定簡單的加密外(防君子的那種)，&lt;br>
它還可以將整個程式連同用到的函式庫一起打包成執行檔！&lt;/p>
&lt;p>我們這邊使用前面的tkinter的範例，&lt;br>
讀者應該會用到的檔案就是fromzero.py和unicorn.ico，&lt;br>
還沒做過的同學，請參照&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10247294" target="_blank" rel="noopener"
>Day 22&lt;/a>的範例及Day 23的修改部分。&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-29-packaging-installation-pyinstaller/image-001.jpg"
width="301"
height="150"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-29-packaging-installation-pyinstaller/image-001_hu699eb7f28124e5fa6f82545fb5268d87_4988_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-29-packaging-installation-pyinstaller/image-001_hu699eb7f28124e5fa6f82545fb5268d87_4988_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="200"
data-flex-basis="481px"
>&lt;/p>
&lt;p>為了測試，&lt;br>
我們再手動加上一個其實我們沒有在這個範例使用的numpy，&lt;br>
請在fromzero.py中額外加入這行：&lt;br>
(因為它是額外pip安裝的，藉此我們可以觀察一下差異)&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">numpy&lt;/span> &lt;span style="color:#c6a0f6">as&lt;/span> &lt;span style="color:#f5a97f">np&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>PyInstaller的使用方式是直接在命令提示字元下指令，&lt;br>
使用pyinstaller -h可以查看help提示：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>pyinstaller &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>h
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>密密麻麻的一大堆XD
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我們簡單介紹一下幾個常用的參數部分：&lt;br>
(前面和後面是相同的效果，只是使用縮寫)&lt;br>
&lt;strong>-h, — help&lt;/strong> ：顯示help提示說明各參數用法&lt;br>
&lt;strong>-F, — onefile&lt;/strong> ：打包成單一一個執行檔&lt;br>
&lt;strong>-D, — onedir (預設)&lt;/strong> ：打包成一個資料夾，內含一個執行檔&lt;br>
&lt;strong>-y, — noconfirm&lt;/strong> ：&lt;br>
&lt;strong>— clean&lt;/strong> ：清空前面打包時產生的暫存檔案&lt;br>
&lt;strong>-n NAME, — name NAME&lt;/strong> ：將NAME做為app名字並命名到執行檔&lt;br>
(預設會是&lt;strong>主程式原先的主檔名&lt;/strong> )&lt;br>
&lt;strong>— add-data &amp;lt;SRC;DEST or SRC:DEST&amp;gt;&lt;/strong> ：&lt;br>
將非二進位檔案加到打包中，&lt;br>
&lt;strong>SRC對應原先的檔案，DEST對應打包後放的相對資料夾位置&lt;/strong>&lt;br>
&lt;strong>-p DIR, — paths DIR&lt;/strong> ：如果有額外需要import的函式庫時，&lt;br>
告訴pyinstaller可以去DIR這個位置搜尋&lt;br>
&lt;strong>— key KEY&lt;/strong> ：用key來加密Python的bytecode&lt;br>
&lt;strong>-w, — windowed, — noconsole&lt;/strong> ：在Windows執行時隱藏命令提示字元的視窗&lt;/p>
&lt;p>那麼，我們先試試看最基本的打包：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve\utils&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>pyinstaller &lt;span style="color:#91d7e3;font-weight:bold">--&lt;/span>noconfirm fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>底下會開始打包
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>在預設的狀況下，會產生幾個目錄：&lt;br>
&lt;strong>pycache(主程式編譯的bytecode檔),&lt;br>
build(編譯過程中產生的檔案),&lt;br>
dist(最終執行所需要的執行檔及其他資料)&lt;/strong>&lt;br>
我們切換到dist\fromzero的資料夾以後，&lt;br>
應該可以看到fromzero.exe，以及其它的一些檔案及資料夾，&lt;br>
當中就包含了tk和numpy，&lt;br>
顯然pyinstaller自動幫我們評估將函式庫給包進來了！&lt;br>
那麼，在命令提示字元打fromzero.exe，&lt;br>
或者在資料夾中連點兩下就可以執行了……咦？&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve\utils\dist\fromzero&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>exe
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;fromzero.py&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">41&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;tkinter\__init__.py&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">2071&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> wm_iconbitmap
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>_tkinter&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>TclError: bitmap &lt;span style="color:#a6da95">&amp;#34;unicorn.ico&amp;#34;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">not&lt;/span> defined
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">12564&lt;/span>] Failed to execute script fromzero
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>顯然我們的獨角獸並沒有被包進去，&lt;br>
由於前面我們讀取檔案時，是在和.py相同的資料夾，&lt;br>
所以我們可以&lt;strong>將unicorn.ico複製到dist\fromzero的資料夾&lt;/strong> ，&lt;br>
就可以正常執行了。&lt;br>
當然這顯然不是很理想，所以讓我們回到上一步，&lt;br>
處理一下圖片的部分。&lt;br>
我們先用以下的方式，將unicorn.ico轉成二進位制，&lt;br>
再存到一個.py檔做為變數img：&lt;br>
(註：參考自&lt;a class="link" href="https://blog.csdn.net/gdkyxy2013/article/details/103755124" target="_blank" rel="noopener"
>CSDN blog&lt;/a>)&lt;br>
(如果是一般檔案，則可以使用 — add-data=’SRC;DEST’的方式即可)&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">base64&lt;/span>　&lt;span style="color:#6e738d;font-style:italic"># base64可以將binary檔案轉成unicode格式&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> icon &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;unicorn.ico&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;rb&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 使用binary的格式讀入icon&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> b64str &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> base64&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>b64encode(icon&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>read()) &lt;span style="color:#6e738d;font-style:italic"># 轉成unicode格式&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> icon&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>close()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> write &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;img = &lt;/span>&lt;span style="color:#a6da95">%s&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> b64str &lt;span style="color:#6e738d;font-style:italic"># 放到名為img的變數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;icon.py&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;w+&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 寫到icon.py中&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>write(write)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">6097&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>close()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>此時資料夾中會多出一個icon.py，&lt;br>
裡面就是img=”……”的格式。&lt;br>
接著我們要修改我們的fromzero.py，&lt;br>
從讀取原本的icon，改成從icon.py取得變數：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">icon&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> img &lt;span style="color:#6e738d;font-style:italic"># 從icon.py中取得img變數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">base64&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 同樣需要base64函式庫&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 主視窗生成&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>win &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Tk()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>title(&lt;span style="color:#a6da95">&amp;#39;從零開始學Python：第二件X折？&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>geometry(&lt;span style="color:#a6da95">&amp;#39;800x220&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>resizable(&lt;span style="color:#f5a97f">False&lt;/span>, &lt;span style="color:#f5a97f">False&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 加上icon&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ico &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;unicorn.ico&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;wb+&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ico&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>write(base64&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>b64decode(img)) &lt;span style="color:#6e738d;font-style:italic"># 寫一個icon出來&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ico&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>close()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>iconbitmap(&lt;span style="color:#a6da95">&amp;#39;unicorn.ico&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 將icon嵌上視窗&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>remove(&lt;span style="color:#a6da95">&amp;#39;unicorn.ico&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 把剛剛用完的檔案刪掉&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我們在重新下一次指令：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve\utils&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>pyinstaller fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>F &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>y &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>w
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>這時候應該同樣可以在dist資料夾看到fromzero.exe，&lt;br>
且由於我們下了-w，所以執行時後面不會出現命令提示字元了！&lt;/p>
&lt;p>如果要進行簡單加密的話，&lt;br>
pyinstaller預設是使用tinyaes：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>pip install tinyaes
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>安裝後，打包時額外加上 — key=”(16個字元的字串)”即可，&lt;br>
少掉的字元會補0。&lt;br>
例如：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve\utils&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>pyinstaller fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>F &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>y &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>w &lt;span style="color:#91d7e3;font-weight:bold">--&lt;/span>key&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#34;XDDD3096&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">61&lt;/span> INFO: PyInstaller: &lt;span style="color:#f5a97f">4.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">62&lt;/span> INFO: Python: &lt;span style="color:#f5a97f">3.8.5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">62&lt;/span> INFO: Platform: Windows&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">7&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">6.1.7601&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>SP1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">64&lt;/span> INFO: wrote C:\Users\Desolve\utils\fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>spec
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">66&lt;/span> INFO: UPX &lt;span style="color:#91d7e3;font-weight:bold">is&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">not&lt;/span> available&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">68&lt;/span> INFO: Extending PYTHONPATH &lt;span style="color:#c6a0f6">with&lt;/span> paths
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;C:&lt;/span>&lt;span style="color:#8aadf4">\\&lt;/span>&lt;span style="color:#a6da95">Users&lt;/span>&lt;span style="color:#8aadf4">\\&lt;/span>&lt;span style="color:#a6da95">Desolve&lt;/span>&lt;span style="color:#8aadf4">\\&lt;/span>&lt;span style="color:#a6da95">utils&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;C:&lt;/span>&lt;span style="color:#8aadf4">\\&lt;/span>&lt;span style="color:#a6da95">Users&lt;/span>&lt;span style="color:#8aadf4">\\&lt;/span>&lt;span style="color:#a6da95">Desolve&lt;/span>&lt;span style="color:#8aadf4">\\&lt;/span>&lt;span style="color:#a6da95">utils&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">77&lt;/span> INFO: Will encrypt Python bytecode &lt;span style="color:#c6a0f6">with&lt;/span> key: &lt;span style="color:#f5a97f">00000000&lt;/span>XDDD3096
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">77&lt;/span> INFO: checking Analysis
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>(以下省略)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果你覺得這樣子還不夠放心，&lt;br>
可以再透過obfuscator或PyArmor之類的軟體，&lt;br>
將主程式進行混淆以後再打包，&lt;br>
效果會更好呦XD！&lt;/p>
&lt;p>最後要留意一點，&lt;br>
如果想要編譯出能在32位元的電腦運行的程式，&lt;br>
則需要使用32位元版本的Python才可以。&lt;/p>
&lt;p>那麼，我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/leetcodeadv" target="_blank" rel="noopener"
>https://bit.ly/leetcodeadv&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/leetcodeall" target="_blank" rel="noopener"
>https://bit.ly/leetcodeall&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (28) — 深度學習Keras：如果你能預知這條路的陷阱，我想你依然錯得很過癮</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/</link><pubDate>Tue, 13 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (28) — 深度學習Keras：如果你能預知這條路的陷阱，我想你依然錯得很過癮" />&lt;h2 id="day-28-深度學習keras如果你能預知這條路的陷阱我想你依然錯得很過癮">Day 28 深度學習Keras：如果你能預知這條路的陷阱，我想你依然錯得很過癮
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10247304" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10247304&lt;/a>&lt;/p>
&lt;p>接下來讓我們來聊聊Python在深度學習的部分。&lt;br>
事實上很多iT邦幫忙的神人們在AI &amp;amp; Data組應該都有介紹到深度學習，&lt;br>
可能是使用Tensorflow, PyTorch或Keras。&lt;br>
本篇的重點不是要一篇打各路大神們的三十篇，&lt;br>
而是要簡單介紹一下AI及深度學習的概念，&lt;br>
給大家做一個入門，後續要再深入的話，就可以再去參考更多其它的學習資源。&lt;/p>
&lt;p>那麼，我們先聊聊什麼是AI。&lt;br>
人工智慧(Artificial Intelligence)，&lt;br>
過往是源自於一些根本的假設以及傳說所揉合而成。&lt;br>
人類對於機器人有一些想像，想像我們可以做出人造人，&lt;br>
這樣的機器人具備自我思考的能力，因而可以透過不斷的思考和選擇達到進化；&lt;br>
同時加上了中古時期對於鍊金術的想像：將意識賦予至無生命的物質當中。&lt;/p>
&lt;p>綜合以上，因而我們對於一個AI的想法，&lt;br>
大體上不外乎是以「它會思考」這個角度來出發。&lt;br>
那麼，怎麼樣才算是會思考呢？&lt;br>
有一位電腦科學家圖靈(Alan Mathison Turing)，&lt;br>
提出了一個著名的測試方式：圖靈測試。&lt;/p>
&lt;p>圖靈測試簡單來說，就是讓一個人(A)，&lt;br>
分別去跟兩個不同的對象(B、C)交談，&lt;br>
過程中只透過文字，&lt;br>
A不會看到B、C的模樣或聽到聲音；&lt;br>
最終交談完畢以後，&lt;br>
由A來判斷B、C是否有實質的不同，或者說誰更像是人。&lt;br>
如果有一個機器比另一個人讓A更覺得它像人的話，&lt;br>
即通過圖靈測試。&lt;/p>
&lt;p>這樣子的測試後來衍生出很多很有趣的例子，&lt;br>
例如有個名為Eliza的聊天機器人，&lt;br>
會將對方講出來的句子分析其主詞及關連性，&lt;br>
針對當中的關鍵字詞來回答；&lt;br>
或者它也會做一些重組，再拿你講過的話來回答你XD！&lt;br>
而這種模式和人互動下，反而很多人會以為Eliza懂他/她，&lt;br>
殊不知完全掉入了程式設計師的陷阱XD&lt;/p>
&lt;p>扯遠了，讓我們拉回來談AI。&lt;br>
我們近幾十年在拿AI這個詞來描述事物時，&lt;br>
其概念和範圍其實也是不斷在變動的。&lt;/p>
&lt;p>以比較之前的看法來說，AI通常會被當做是：&lt;br>
&lt;strong>使用確定的規則判斷，使得機器得以按照這個規則去運作，&lt;br>
從而在某些方面表現出像是人類在做思考判斷一樣。&lt;/strong>&lt;/p>
&lt;p>比如電腦遊戲中玩家操縱的角色跟NPC對話時，&lt;br>
NPC會依照它的「人設」(也就是遊戲開發者原先對其的設定)，&lt;br>
以及當前的一些條件狀況，對玩家做出回應。&lt;br>
當然，我們可以很輕易地看出這是寫好的規則判斷，&lt;br>
原因就是這個NPC可能講沒幾句話就重複循環，&lt;br>
或者是一直要你去打10隻母雞回來交任務XD&lt;/p>
&lt;p>再比方說過往的圍棋或象棋軟體，&lt;br>
甚至打敗過西洋棋棋王的電腦「深藍」，&lt;br>
也都脫離不開使用寫好的規則來計算下一步的範疇，&lt;br>
這樣子的AI，我們將其稱為rule-based AI。&lt;br>
按規則走的優點是，&lt;br>
當事情是確定的，且符合過往能歸納的範疇，&lt;br>
那麼機器處理的能力就會非常好。&lt;br>
缺點當然就是一旦遇上沒有被界定的情況，&lt;br>
那機器就會不知道該怎麼辦了XD!&lt;/p>
&lt;p>AI在經歷過幾次興起以及幾次寒冬以後，&lt;br>
得益於GPU性能的提升，能加速大量的平行化運算的矩陣運算的原因，&lt;br>
&lt;strong>深度學習(Deep Learning)在近年來興起了。&lt;/strong>&lt;br>
深度學習所建立的AI，和以往以規則為出發的AI不同，&lt;br>
它主要是透過所謂的人工神經網路(Artificial Neural Network, ANN)，&lt;br>
在建立起一個結構以後，透過不斷地輸入資料，&lt;br>
輸出結果，檢查結果與正確答案的差距，再對神經網路各自的權重(weight)做修正，&lt;br>
最終讓每次的輸入所得到的輸出結果，能接近正確答案。&lt;/p>
&lt;p>舉例來說：&lt;br>
假設讀者的面前有一棵樹，&lt;br>
&lt;strong>rule-based的做法會是：&lt;/strong>&lt;br>
&lt;strong>「這邊有樹枝，這邊有樹葉，中間有枝幹連接，&lt;br>
它們的顏色在XX~OO之間，所以這是一棵樹」&lt;/strong>&lt;/p>
&lt;p>&lt;strong>深度學習的做法則是：&lt;/strong>&lt;br>
&lt;strong>「反正這就是一棵樹就對了！不知道？沒關係，&lt;br>
我多帶你看幾個：A這個是樹，B這個不是樹，&lt;br>
……好，那你這樣應該可以分辨樹了對吧？」&lt;/strong>&lt;/p>
&lt;p>深度學習在神經網路的類型的這塊，&lt;br>
相對比較像人類的小孩子在學習一樣，&lt;br>
透過不斷的歸納，最終小孩子在心裡面產生一套分辨方式，&lt;br>
這個分辨方式可能說得出來，可能說不出來，&lt;br>
但最終他/她就是會講得出「這是一棵樹，這是車車」這樣子的分類。&lt;/p>
&lt;p>上面提到的深度學習的方式，&lt;br>
在具體到人工神經網路上狀態又是怎麼樣的呢？&lt;br>
比較粗略的來說，&lt;br>
人工神經網路是由神經元(neurons)彼此以突觸連接而成的，&lt;br>
不同的突觸，傳遞相同的訊號時會產生不同的強弱變化，&lt;br>
通常我們稱之為權重(weights)。&lt;br>
如同剛剛所說的，&lt;br>
我們會透過檢查正確答案和目前機器輸出的答案的差距，&lt;br>
來修正權重，最常見的方式，&lt;br>
就是使用&lt;strong>反向傳播(backpropagation, BP)&lt;/strong> ，&lt;br>
加上&lt;strong>梯度下降法(gradient descent)或其他算法&lt;/strong> ，&lt;br>
來盡力收斂和正確答案的差距。&lt;br>
這個改善神經網路的過程我們通常稱之為模型訓練(model training)&lt;/p>
&lt;p>那麼，接下來談談&lt;a class="link" href="https://keras.io/" target="_blank" rel="noopener"
>Keras&lt;/a>。&lt;br>
Keras原本是一個用於快速開發深度神經網路的框架，&lt;br>
立基於各項比較常見的框架之上，&lt;br>
例如TensorFlow(Google Brain團隊所開發), Theano, PlaidML等。&lt;br>
但近年來最主要的支援是放到了TensorFlow上面，&lt;br>
同時TensorFlow也主動將Keras的函式庫納入到其中，&lt;br>
我們接下來的範例會基於TensorFlow上的Keras來操作。&lt;/p>
&lt;p>如果在自己的電腦上想安裝TensorFlow/Keras的話，&lt;br>
可以參考官網：&lt;br>
&lt;a class="link" href="https://www.tensorflow.org/install/pip?hl=zh_tw" target="_blank" rel="noopener"
>https://www.tensorflow.org/install/pip?hl=zh_tw&lt;/a>&lt;br>
請留意，如果是要用到gpu的話，&lt;br>
你必須要安裝的是tensorflow-gpu。&lt;/p>
&lt;p>由於不是每個人的家裡的GPU都很精良，&lt;br>
所以下面我們主要會介紹如何跟著TensorFlow上的官網提供的colab範例來做。&lt;br>
下面我們會一步步帶各位走過最基本的範例：Fashion MNIST的分類，&lt;br>
請從&lt;a class="link" href="https://www.tensorflow.org/tutorials/keras/classification?hl=zh_tw#import_the_fashion_mnist_dataset" target="_blank" rel="noopener"
>Basic classification: Classify images of clothing&lt;/a>&lt;br>
找到&lt;strong>Run in Google Colab&lt;/strong> 並將其打開。&lt;/p>
&lt;p>在Colab的網頁中，&lt;br>
當看到”[ ]”的格子時，&lt;br>
代表一組可以執行的程式碼，&lt;br>
滑鼠移動到上面，會顯現播放鍵，&lt;br>
只要按下去就會執行一次。&lt;br>
執行完後顯示的數字代表它已經被執行過了，&lt;br>
且是第幾個被執行的格子。&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_0tdaFTFxoUvqShRB.jpg"
width="800"
height="425"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_0tdaFTFxoUvqShRB_huc98b7f38617de06cd32faa1e0ab695b3_43446_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_0tdaFTFxoUvqShRB_huc98b7f38617de06cd32faa1e0ab695b3_43446_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="188"
data-flex-basis="451px"
>&lt;/p>
&lt;p>首先我們看到前導的部分：&lt;br>
我們要使用到的一般會有tensorflow本身以及keras，&lt;br>
所以要進行import，同時，前面我們提過的numpy以及matplolib也都會用到，&lt;br>
讓我們一起導進來。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># TensorFlow and tf.keras&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">tensorflow&lt;/span> &lt;span style="color:#c6a0f6">as&lt;/span> &lt;span style="color:#f5a97f">tf&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">tensorflow&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> keras
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># Helper libraries&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">numpy&lt;/span> &lt;span style="color:#c6a0f6">as&lt;/span> &lt;span style="color:#f5a97f">np&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">matplotlib.pyplot&lt;/span> &lt;span style="color:#c6a0f6">as&lt;/span> &lt;span style="color:#f5a97f">plt&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(tf&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>__version__) &lt;span style="color:#6e738d;font-style:italic"># 印出當前tensorflow的版本，目前是2.3.0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>再來，我們要匯入一組資料集(dataset)。&lt;br>
資料集一般是指針對特定目標或種類收集整理而成的資料，&lt;br>
一些比較代表性的資料集如Cifar-10, MNIST, ImageNet等，&lt;br>
依照使用的狀況不同，有些會被拿來當成基本教學範例，&lt;br>
有些則是會被拿來當成評估訓練方法好不好的標準。&lt;br>
以Fashion MNIST來說，&lt;br>
就是一個在MNIST(手寫0~9的圖形資料集)被用到太無聊的狀況下，&lt;br>
可能打算換換口味才換過來的資料集XD。&lt;/p>
&lt;p>Fashion MNIST當中有7萬張灰階圖，&lt;br>
內容是10種不同的服飾，如鞋子、包包、衣服、褲子等。&lt;br>
以這個範例來說，我們的目的，&lt;br>
就是訓練出一個能夠良好地辨認出一張圖片是哪個種類的服飾的模型。&lt;/p>
&lt;p>我們要將Fashion MNIST下載後，分為&lt;strong>用來訓練的資料，以及用來測試用的資料&lt;/strong> ：&lt;br>
為什麼要分呢？因為如果全部都拿來訓練的話，&lt;br>
那麼在測試這個訓練結果時，我們怎麼知道說，&lt;br>
這個模型(model)回答的好，是因為它真的懂了，&lt;br>
還是是因為背熟考古題呢XD？&lt;br>
畢竟我們是希望它找出一個自己能夠辨別的標準，&lt;br>
而不是背答案。&lt;/p>
&lt;p>這邊的label(標籤)，指的是該張圖片，是屬於這個資料集的第幾類，&lt;br>
這樣到時候訓練時才能夠知道模型有沒有找錯。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>fashion_mnist &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> keras&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>datasets&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>fashion_mnist
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>(train_images, train_labels), (test_images, test_labels) &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> fashion_mnist&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>load_data()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>在這個資料集中，我們標記為0的是T-shirt/top，&lt;br>
1的是Trouser, 以此類推，將每個類別的名稱記錄下來。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>class_names &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#a6da95">&amp;#39;T-shirt/top&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Trouser&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Pullover&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Dress&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Coat&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#39;Sandal&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Shirt&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Sneaker&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Bag&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Ankle boot&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接著檢查一下剛剛拿到的資料：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>train_images&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>shape &lt;span style="color:#6e738d;font-style:italic"># (60000, 28, 28) -&amp;gt; 60000張，每張像素是28x28&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">len&lt;/span>(train_labels) &lt;span style="color:#6e738d;font-style:italic"># 60000 -&amp;gt; 對應的標籤當然就也是60000張&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>train_labels &lt;span style="color:#6e738d;font-style:italic"># array([9, 0, 0, ..., 3, 0, 5], dtype=uint8) -&amp;gt; 0~9的種類，共10種&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>test_images&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>shape &lt;span style="color:#6e738d;font-style:italic"># (10000, 28, 28) -&amp;gt; 10000張用來做為測試的圖像&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">len&lt;/span>(test_labels) &lt;span style="color:#6e738d;font-style:italic"># 10000 -&amp;gt; 對應的標籤當然是10000&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接著我們來預先處理一下資料，&lt;br>
使用plt.imshow()可以將進行圖像繪製，&lt;br>
我們就拿train_images[0]這張來看看：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>figure()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>imshow(train_images[&lt;span style="color:#f5a97f">0&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>colorbar() &lt;span style="color:#6e738d;font-style:italic"># 用來顯示灰階影像(0-255)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>grid(&lt;span style="color:#f5a97f">False&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_PAT15poCv2yRZdm9.jpg"
width="310"
height="244"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_PAT15poCv2yRZdm9_hua450b2f25ccbd6c074a42207b37363d0_12128_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_PAT15poCv2yRZdm9_hua450b2f25ccbd6c074a42207b37363d0_12128_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="304px"
>&lt;/p>
&lt;p>通常我們要處理資料時，&lt;br>
我們要將其標準化到0&lt;del>1的範圍，&lt;br>
這樣子才不會因為不同的資料的尺度(scale)不同，&lt;br>
影響到模型的訓練或它們對於結果影響的比例。&lt;br>
由於灰階影像的值是0&lt;/del>255，所以我們可以選擇全數除以255.0來等比例縮小，&lt;br>
接著再取前25張圖來檢查處理過的資料是否正常仍可顯示：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>train_images &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> train_images &lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span> &lt;span style="color:#f5a97f">255.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>test_images &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> test_images &lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span> &lt;span style="color:#f5a97f">255.0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>figure(figsize&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#f5a97f">10&lt;/span>,&lt;span style="color:#f5a97f">10&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">25&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>subplot(&lt;span style="color:#f5a97f">5&lt;/span>,&lt;span style="color:#f5a97f">5&lt;/span>,i&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 5*5的排列方式&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>xticks([])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>yticks([])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>grid(&lt;span style="color:#f5a97f">False&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>imshow(train_images[i], cmap&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cm&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>binary) &lt;span style="color:#6e738d;font-style:italic"># 範圍0~1時要選binary&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>xlabel(class_names[train_labels[i]]) &lt;span style="color:#6e738d;font-style:italic"># 在x軸的位置顯現分類名&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來是模型的部分。&lt;br>
要訓練模型之前，首先我們要先將模型的神經網路建構起來，&lt;br>
通常狀態下神經網路是以層(layer)為單位，&lt;br>
層與層彼此之間進行連接，多個層最終構成一個神經網路。&lt;br>
&lt;strong>Sequential:&lt;/strong> 代表前面的往後面的承接&lt;br>
&lt;strong>Flatten:&lt;/strong> 代表將輸入的東西攤平成一維(28*28=784)&lt;br>
&lt;strong>Dense:&lt;/strong> Dense layer又稱全連接層，也就是像握手一樣，&lt;br>
上一層的每個神經元和這層的神經元的每一個組合都有連接到&lt;br>
&lt;strong>activation:&lt;/strong> 激勵函式(activation function)，簡單來說，&lt;br>
就是一個讓整個神經連接呈現不是線性的狀態。&lt;br>
因為若是一個模型可以用很簡單的公式或者線性可表達的函數算出來，&lt;br>
這樣子的狀態不是深度學習所要的，因為如果一般的方式可以算的話，&lt;br>
深度學習並沒有比較具備優勢。&lt;br>
(其它目的還有避免過擬合或節省部分計算的考量，我們暫且不深入探討)&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 最後一層是10個神經元，目的就是剛好分成10類&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>model &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> keras&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Sequential([
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> keras&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>layers&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Flatten(input_shape&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#f5a97f">28&lt;/span>, &lt;span style="color:#f5a97f">28&lt;/span>)),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> keras&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>layers&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Dense(&lt;span style="color:#f5a97f">128&lt;/span>, activation&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;relu&amp;#39;&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> keras&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>layers&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Dense(&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>完成一個模型後，我們要進行compile的動作，&lt;br>
將其它附帶的條件給加上。&lt;br>
Loss function(損失函數)：用來評估說模型現在給出的答案和正確答案的差距的函式，&lt;br>
這個可以有很多種類，這裡用的是用來衡量分類的SparseCategoricalentropy。&lt;br>
Optimizer(優化器)：我們在修正時，不會直接將Loss給出來的差直接處理掉，&lt;br>
而是會有一個評估要往哪個方向修正多少的方法做為基準。&lt;br>
(因為這個點完全相等並不能代表另一個會表現好)&lt;br>
除了adam以外，sgd, adagrad等都是常見的優化器。&lt;br>
Metrics(指標)：在訓練的過程中我們會想看的中途狀況，&lt;br>
accuracy是計算每次有正確被分類的圖片的比例。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>model&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>compile(optimizer&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;adam&amp;#39;&lt;/span>, loss&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tf&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>keras&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>losses&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>SparseCategoricalCrossentropy(from_logits&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">True&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>metrics&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>[&lt;span style="color:#a6da95">&amp;#39;accuracy&amp;#39;&lt;/span>])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來就要開始訓練啦!&lt;br>
Keras中是使用model.fit指令，意思是這個模型要盡力去符合實際的正確標準。&lt;br>
epochs是代表以前面60000張圖片做為一整組的話，&lt;br>
我們想要讓同一個組讓機器訓練過幾次。&lt;br>
指令下了以後就會在下方看到進度條跑動，&lt;br>
以這次訓練來說，&lt;br>
目前訓練的準確度在最後一次是0.9100，也就是91%。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>model&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>fit(train_images, train_labels, epochs&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>Epoch &lt;span style="color:#f5a97f">1&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1875&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">1875&lt;/span> [&lt;span style="color:#91d7e3;font-weight:bold">==============================&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">4&lt;/span>s &lt;span style="color:#f5a97f">2&lt;/span>ms&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>step &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> loss: &lt;span style="color:#f5a97f">0.5019&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> accuracy: &lt;span style="color:#f5a97f">0.8236&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Epoch &lt;span style="color:#f5a97f">2&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1875&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">1875&lt;/span> [&lt;span style="color:#91d7e3;font-weight:bold">==============================&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">4&lt;/span>s &lt;span style="color:#f5a97f">2&lt;/span>ms&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>step &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> loss: &lt;span style="color:#f5a97f">0.3788&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> accuracy: &lt;span style="color:#f5a97f">0.8633&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Epoch &lt;span style="color:#f5a97f">3&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1875&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">1875&lt;/span> [&lt;span style="color:#91d7e3;font-weight:bold">==============================&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">4&lt;/span>s &lt;span style="color:#f5a97f">2&lt;/span>ms&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>step &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> loss: &lt;span style="color:#f5a97f">0.3425&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> accuracy: &lt;span style="color:#f5a97f">0.8743&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Epoch &lt;span style="color:#f5a97f">4&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1875&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">1875&lt;/span> [&lt;span style="color:#91d7e3;font-weight:bold">==============================&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">4&lt;/span>s &lt;span style="color:#f5a97f">2&lt;/span>ms&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>step &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> loss: &lt;span style="color:#f5a97f">0.3169&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> accuracy: &lt;span style="color:#f5a97f">0.8840&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Epoch &lt;span style="color:#f5a97f">5&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1875&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">1875&lt;/span> [&lt;span style="color:#91d7e3;font-weight:bold">==============================&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span>s &lt;span style="color:#f5a97f">2&lt;/span>ms&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>step &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> loss: &lt;span style="color:#f5a97f">0.2985&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> accuracy: &lt;span style="color:#f5a97f">0.8910&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Epoch &lt;span style="color:#f5a97f">6&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1875&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">1875&lt;/span> [&lt;span style="color:#91d7e3;font-weight:bold">==============================&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span>s &lt;span style="color:#f5a97f">2&lt;/span>ms&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>step &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> loss: &lt;span style="color:#f5a97f">0.2821&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> accuracy: &lt;span style="color:#f5a97f">0.8957&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Epoch &lt;span style="color:#f5a97f">7&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1875&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">1875&lt;/span> [&lt;span style="color:#91d7e3;font-weight:bold">==============================&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span>s &lt;span style="color:#f5a97f">2&lt;/span>ms&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>step &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> loss: &lt;span style="color:#f5a97f">0.2713&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> accuracy: &lt;span style="color:#f5a97f">0.8996&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Epoch &lt;span style="color:#f5a97f">8&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1875&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">1875&lt;/span> [&lt;span style="color:#91d7e3;font-weight:bold">==============================&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span>s &lt;span style="color:#f5a97f">2&lt;/span>ms&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>step &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> loss: &lt;span style="color:#f5a97f">0.2594&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> accuracy: &lt;span style="color:#f5a97f">0.9035&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Epoch &lt;span style="color:#f5a97f">9&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1875&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">1875&lt;/span> [&lt;span style="color:#91d7e3;font-weight:bold">==============================&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span>s &lt;span style="color:#f5a97f">2&lt;/span>ms&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>step &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> loss: &lt;span style="color:#f5a97f">0.2499&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> accuracy: &lt;span style="color:#f5a97f">0.9067&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Epoch &lt;span style="color:#f5a97f">10&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1875&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">1875&lt;/span> [&lt;span style="color:#91d7e3;font-weight:bold">==============================&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span>s &lt;span style="color:#f5a97f">2&lt;/span>ms&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>step &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> loss: &lt;span style="color:#f5a97f">0.2429&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> accuracy: &lt;span style="color:#f5a97f">0.9100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>tensorflow&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>python&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>keras&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>callbacks&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>History at &lt;span style="color:#f5a97f">0x7f88189846a0&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>但只會做考古題不算真本事，我們還得看看，&lt;br>
這個模型測試沒看過的圖片時，準確度會是怎麼樣：&lt;br>
我們將最終使用test的圖片來檢驗的動作稱之為evaluate(評定)。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>test_loss, test_acc &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> model&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>evaluate(test_images, test_labels, verbose&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">Test accuracy:&amp;#39;&lt;/span>, test_acc)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 結果是88.3%左右&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">313&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>&lt;span style="color:#f5a97f">313&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>s &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> loss: &lt;span style="color:#f5a97f">0.3400&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> accuracy: &lt;span style="color:#f5a97f">0.8827&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>Test accuracy: &lt;span style="color:#f5a97f">0.8827000260353088&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>訓練好的模型，當然不應該只拿來檢查準確度，&lt;br>
也要可以用來檢視新的圖片：&lt;br>
一般狀況下，我們會使用一個softmax層來處理。&lt;br>
softmax層能將一群輸入的值，按照一個分配方式壓縮，&lt;br>
最終所有值都在0~1之間，且加總起來會剛好等於1，&lt;br>
我們就拿這個輸出來做為判斷某個輸入的圖是什麼種類的機率有多少。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 連接softmax層&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>probability_model &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tf&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>keras&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Sequential([model, tf&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>keras&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>layers&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Softmax()])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 用predict方法來進行推論(inference)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>predictions &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> probability_model&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>predict(test_images)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 每一個predictions的元素當中包含了預測這個圖分別是種類0~9的機率值&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>predictions[&lt;span style="color:#f5a97f">0&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>array([&lt;span style="color:#f5a97f">2.3251364e-07&lt;/span>, &lt;span style="color:#f5a97f">1.5796850e-08&lt;/span>, &lt;span style="color:#f5a97f">5.2541566e-07&lt;/span>, &lt;span style="color:#f5a97f">9.3214476e-09&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">7.9444156e-08&lt;/span>, &lt;span style="color:#f5a97f">1.8098523e-03&lt;/span>, &lt;span style="color:#f5a97f">5.7661474e-08&lt;/span>, &lt;span style="color:#f5a97f">8.4252998e-02&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">1.4421660e-07&lt;/span>, &lt;span style="color:#f5a97f">9.1393608e-01&lt;/span>], dtype&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>float32)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 我們要取機率最高的當做是我們判斷它是哪一種類型&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 使用np.argmax，其結果看起來跟實際上的答案一致，代表有答對XD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>argmax(predictions[&lt;span style="color:#f5a97f">0&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">9&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>test_labels[&lt;span style="color:#f5a97f">0&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">9&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>下面colab的範例也提供了兩個函式來提供視覺化的判斷，&lt;br>
在此就不一一解釋：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_NWo3fG1gDmB1FuxJ.jpg"
width="701"
height="579"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_NWo3fG1gDmB1FuxJ_hu6d96a30a7180704815603d5591959a63_47064_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_NWo3fG1gDmB1FuxJ_hu6d96a30a7180704815603d5591959a63_47064_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="121"
data-flex-basis="290px"
>&lt;/p>
&lt;p>我們可以看到模型也是有答錯的時候XD：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_EBWPukZi_uzyzHj8.jpg"
width="479"
height="739"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_EBWPukZi_uzyzHj8_huf640bbd15844a0096facf37e38bbfcdb_37990_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_EBWPukZi_uzyzHj8_huf640bbd15844a0096facf37e38bbfcdb_37990_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="64"
data-flex-basis="155px"
>&lt;/p>
&lt;p>後面還有畫一整群圖片檢驗的對照圖，就請讀者自行參閱。&lt;/p>
&lt;p>最後，範例有提到說，因為前面的示範是一次放入10000張下去做predict，&lt;br>
如果今天有一張單張的28x28灰階圖片，&lt;br>
其實同樣可以拿來做predict呦！&lt;br>
唯一的不同，就只是你要將這”一張”圖片，擴展成”一組”圖片，&lt;br>
而這一組裡面就只有一張圖片的格式。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>img &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> test_images[&lt;span style="color:#f5a97f">1&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 拿第二張&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>shape) &lt;span style="color:#6e738d;font-style:italic"># (28, 28)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>img &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> (np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>expand_dims(img,&lt;span style="color:#f5a97f">0&lt;/span>)) &lt;span style="color:#6e738d;font-style:italic"># 擴展一個維度，讓它變成&amp;#34;一組&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>shape) &lt;span style="color:#6e738d;font-style:italic"># (1, 28, 28)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>predictions_single &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> probability_model&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>predict(img) &lt;span style="color:#6e738d;font-style:italic"># 現在可以predict了&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(predictions_single)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#f5a97f">5.1490115e-05&lt;/span> &lt;span style="color:#f5a97f">9.7672521e-14&lt;/span> &lt;span style="color:#f5a97f">9.9936408e-01&lt;/span> &lt;span style="color:#f5a97f">2.5379993e-12&lt;/span> &lt;span style="color:#f5a97f">1.0796214e-04&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">6.6310263e-10&lt;/span> &lt;span style="color:#f5a97f">4.7655238e-04&lt;/span> &lt;span style="color:#f5a97f">2.3014628e-11&lt;/span> &lt;span style="color:#f5a97f">2.8894394e-08&lt;/span> &lt;span style="color:#f5a97f">5.6684479e-12&lt;/span>]]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>最終結果順利預測出該圖片是Pullover(套頭衫)。&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_azmWsDnS4h_zQTQ0.jpg"
width="800"
height="474"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_azmWsDnS4h_zQTQ0_hu3b6cbedac685a2ac9402efbd7b36a3dc_27130_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-28-deep-learning-keras/0_azmWsDnS4h_zQTQ0_hu3b6cbedac685a2ac9402efbd7b36a3dc_27130_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="168"
data-flex-basis="405px"
>&lt;/p>
&lt;p>雖然從上到下講得相當長，&lt;br>
但其實只是很粗淺的示範了一下最基礎的範例而已，&lt;br>
深度學習除了圖像分類以外，&lt;br>
從圖片到文字，再到聲音，各種應用可以說是包山包海；&lt;br>
更不用說還有不同的模型建立方式與架構，&lt;br>
今天的介紹連冰山一角都稱不上XD&lt;br>
若讀者有更深入的興趣的話，可能就要從更基本的機器學習部分出發了！&lt;/p>
&lt;p>除此以外，若要自己進行深度學習的訓練的話，&lt;br>
架構一個環境還是很有必要的，&lt;br>
就再請讀者閱讀一下其他大大們的教學呦！&lt;/p>
&lt;p>那麼，我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (27) — 科學繪圖Matplotlib：畫著你，畫不出你的骨骼</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/</link><pubDate>Mon, 12 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (27) — 科學繪圖Matplotlib：畫著你，畫不出你的骨骼" />&lt;h2 id="day-27-科學繪圖matplotlib畫著你畫不出你的骨骼">Day 27 科學繪圖Matplotlib：畫著你，畫不出你的骨骼
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10247303" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10247303&lt;/a>&lt;/p>
&lt;p>今天我們要來介紹的是Matplotlib，&lt;br>
對於Python來說，是一套非常常用於科學繪圖的繪圖程式庫，&lt;br>
同時也相當良好地支援了NumPy的陣列，&lt;br>
此外，通常狀況下，只要設定恰當，&lt;br>
也可以很順利地在一些帶有視窗運作的Python執行環境，&lt;br>
如IPython, Jupyter Notebook, colab等直接內嵌繪製圖片，&lt;br>
可以說是相當的方便！&lt;br>
由於最初的目的是提供如同Matlab軟體的繪圖方式，&lt;br>
所以常用Matlab的人可能會覺得很多東西似曾相識XD&lt;/p>
&lt;p>要使用matplotlib時，&lt;strong>官方有提供pylab&lt;/strong> ，&lt;br>
將matplotlib的pyplot和numpy合併在一起，&lt;br>
但還是&lt;strong>建議numpy歸numpy，pyplot歸pyplot&lt;/strong> 。&lt;/p>
&lt;p>同樣的，如果電腦還沒有matplotlib套件的話，&lt;br>
請先使用pip install進行安裝。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>pip install matplotlib
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來讓我們來介紹一些基本的功能。&lt;br>
首先，我們要先將numpy和matplotlib的pyplot給import進來：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">numpy&lt;/span> &lt;span style="color:#c6a0f6">as&lt;/span> &lt;span style="color:#f5a97f">np&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">matplotlib.pyplot&lt;/span> &lt;span style="color:#c6a0f6">as&lt;/span> &lt;span style="color:#f5a97f">plt&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>記得上一篇我們做過一個隨積分布的陣列嗎？&lt;br>
如果我們想將其使用直方圖(Histogram)來表現出點的分布數量的話，&lt;br>
可以使用plt.hist()，將陣列輸入給plt；&lt;br>
同時，plt在繪製以後，要經過plt.show()的方法才會顯示出來。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> mu, sigma &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0.1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> s &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>random&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>normal(mu, sigma, &lt;span style="color:#f5a97f">1000&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>hist(s) &lt;span style="color:#6e738d;font-style:italic"># 繪製直方圖，預設分成10組&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>(array([ &lt;span style="color:#f5a97f">10.&lt;/span>, &lt;span style="color:#f5a97f">32.&lt;/span>, &lt;span style="color:#f5a97f">91.&lt;/span>, &lt;span style="color:#f5a97f">164.&lt;/span>, &lt;span style="color:#f5a97f">238.&lt;/span>, &lt;span style="color:#f5a97f">216.&lt;/span>, &lt;span style="color:#f5a97f">147.&lt;/span>, &lt;span style="color:#f5a97f">71.&lt;/span>, &lt;span style="color:#f5a97f">25.&lt;/span>, &lt;span style="color:#f5a97f">6.&lt;/span>]), array([&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">30285466&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.2403016&lt;/span> , &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.17774855&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.1151955&lt;/span> , &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.05264245&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">0.0099106&lt;/span> , &lt;span style="color:#f5a97f">0.07246365&lt;/span>, &lt;span style="color:#f5a97f">0.1350167&lt;/span> , &lt;span style="color:#f5a97f">0.19756975&lt;/span>, &lt;span style="color:#f5a97f">0.2601228&lt;/span> ,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">0.32267585&lt;/span>]), &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>BarContainer &lt;span style="color:#91d7e3">object&lt;/span> of &lt;span style="color:#f5a97f">10&lt;/span> artists&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 在直譯器的話可以按Ctrl+C回來或按X關掉plt視窗&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>hist(s, &lt;span style="color:#f5a97f">30&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 第二個參數為30, 代表將值的範圍切分成30等份(預設則為10)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>(array([ &lt;span style="color:#f5a97f">1.&lt;/span>, &lt;span style="color:#f5a97f">4.&lt;/span>, &lt;span style="color:#f5a97f">5.&lt;/span>, &lt;span style="color:#f5a97f">8.&lt;/span>, &lt;span style="color:#f5a97f">9.&lt;/span>, &lt;span style="color:#f5a97f">15.&lt;/span>, &lt;span style="color:#f5a97f">19.&lt;/span>, &lt;span style="color:#f5a97f">25.&lt;/span>, &lt;span style="color:#f5a97f">47.&lt;/span>, &lt;span style="color:#f5a97f">46.&lt;/span>, &lt;span style="color:#f5a97f">49.&lt;/span>, &lt;span style="color:#f5a97f">69.&lt;/span>, &lt;span style="color:#f5a97f">71.&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">79.&lt;/span>, &lt;span style="color:#f5a97f">88.&lt;/span>, &lt;span style="color:#f5a97f">87.&lt;/span>, &lt;span style="color:#f5a97f">76.&lt;/span>, &lt;span style="color:#f5a97f">53.&lt;/span>, &lt;span style="color:#f5a97f">55.&lt;/span>, &lt;span style="color:#f5a97f">55.&lt;/span>, &lt;span style="color:#f5a97f">37.&lt;/span>, &lt;span style="color:#f5a97f">40.&lt;/span>, &lt;span style="color:#f5a97f">16.&lt;/span>, &lt;span style="color:#f5a97f">15.&lt;/span>, &lt;span style="color:#f5a97f">9.&lt;/span>, &lt;span style="color:#f5a97f">9.&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">7.&lt;/span>, &lt;span style="color:#f5a97f">4.&lt;/span>, &lt;span style="color:#f5a97f">1.&lt;/span>, &lt;span style="color:#f5a97f">1.&lt;/span>]), array([&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.30285466&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.28200364&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.26115262&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.24&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">03016&lt;/span> , &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.21945059&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.19859957&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.17774855&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.15689754&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.13604652&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.1151955&lt;/span> ,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.09434449&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.07349347&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.05264245&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.03179144&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.01094042&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">0.0099106&lt;/span> , &lt;span style="color:#f5a97f">0.03076161&lt;/span>, &lt;span style="color:#f5a97f">0.05161263&lt;/span>, &lt;span style="color:#f5a97f">0.07246365&lt;/span>, &lt;span style="color:#f5a97f">0.09331467&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">0.11416568&lt;/span>, &lt;span style="color:#f5a97f">0.1350167&lt;/span> , &lt;span style="color:#f5a97f">0.15586772&lt;/span>, &lt;span style="color:#f5a97f">0.17671873&lt;/span>, &lt;span style="color:#f5a97f">0.19756975&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">0.21842077&lt;/span>, &lt;span style="color:#f5a97f">0.23927178&lt;/span>, &lt;span style="color:#f5a97f">0.2601228&lt;/span> , &lt;span style="color:#f5a97f">0.28097382&lt;/span>, &lt;span style="color:#f5a97f">0.30182483&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">0.32267585&lt;/span>]), &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>BarContainer &lt;span style="color:#91d7e3">object&lt;/span> of &lt;span style="color:#f5a97f">30&lt;/span> artists&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>應該可以看到接近如下的圖(前面是分10組，後面是分30組)：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_YeNoFQDjIUcwXcs9.jpg"
width="651"
height="555"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_YeNoFQDjIUcwXcs9_hu31a434775d6156e15c0cf975d19dcb0f_22018_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_YeNoFQDjIUcwXcs9_hu31a434775d6156e15c0cf975d19dcb0f_22018_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="117"
data-flex-basis="281px"
>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_JhzDK60E70Pie9ZM.jpg"
width="649"
height="558"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_JhzDK60E70Pie9ZM_hu28c49d9d57436ad31e47b8a5ad955171_24433_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_JhzDK60E70Pie9ZM_hu28c49d9d57436ad31e47b8a5ad955171_24433_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="116"
data-flex-basis="279px"
>&lt;/p>
&lt;p>我們在繪圖時，如果一般使用畫線按座標的話，&lt;br>
通常是以plt.plot(x, y, linewidth)的型式，&lt;br>
此時就要剛好每個x的元素都對應到y的元素：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> x &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>arange(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> y &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> x
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>plot(x, y, linewidth&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">1.5&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 這樣應該是y=2x的樣子&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>matplotlib&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>lines&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Line2D &lt;span style="color:#91d7e3">object&lt;/span> at &lt;span style="color:#f5a97f">0x000000000BCCB220&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_ZFj48kVhXCS20Oas.jpg"
width="650"
height="556"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_ZFj48kVhXCS20Oas_hu835535d1b3c301aabcf8df22c7a79949_21393_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_ZFj48kVhXCS20Oas_hu835535d1b3c301aabcf8df22c7a79949_21393_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="116"
data-flex-basis="280px"
>&lt;/p>
&lt;p>請留意一點，由於Python的陣列預設從0開始，所以當我們只給一段座標時，&lt;br>
會被當成y座標，且x會從0開始起算，以整數遞增：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>plot([&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">4&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>plot([&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">4&lt;/span>], [&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">4&lt;/span>]) &lt;span style="color:#6e738d;font-style:italic"># 留意X座標的變化!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_MyXqljAy3aPJIV-c.jpg"
width="649"
height="555"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_MyXqljAy3aPJIV-c_hud7720f6c046502aace694906f2c777bb_22240_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_MyXqljAy3aPJIV-c_hud7720f6c046502aace694906f2c777bb_22240_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="116"
data-flex-basis="280px"
>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_P_AdNbxgzBB1mesh.jpg"
width="648"
height="552"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_P_AdNbxgzBB1mesh_hue440195008753b2058c469ef296c0cab_22280_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_P_AdNbxgzBB1mesh_hue440195008753b2058c469ef296c0cab_22280_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="117"
data-flex-basis="281px"
>&lt;/p>
&lt;p>以plt.plot的方式繪圖時，畫上去的圖被稱為figure，&lt;br>
figure的軸則是axes，可以用add_subplot(1,1,1)方法取用到，&lt;br>
如果同時放多張子圖的話(1,1,1)代表第一張。&lt;br>
(這不是很好解釋，如果一次只畫一張圖的話就不管它啦！)&lt;br>
我們可以在繪製完圖以後再做額外的事情：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> fig &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>figure()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> ax &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> fig&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>add_subplot(&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">1&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> ax&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>plot([&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">4&lt;/span>], [&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">4&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>matplotlib&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>lines&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Line2D &lt;span style="color:#91d7e3">object&lt;/span> at &lt;span style="color:#f5a97f">0x000000000B540B80&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> ax&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set_title(&lt;span style="color:#a6da95">&amp;#39;Title&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 表題&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Text(&lt;span style="color:#f5a97f">0.5&lt;/span>, &lt;span style="color:#f5a97f">1.0&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Title&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> ax&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set_xlabel(&lt;span style="color:#a6da95">&amp;#34;label: x&amp;#34;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># X軸文字&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Text(&lt;span style="color:#f5a97f">0.5&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;label: x&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> ax&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set_ylabel(&lt;span style="color:#a6da95">&amp;#34;label: y&amp;#34;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># Y軸文字&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Text(&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0.5&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;label: y&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> fig&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>suptitle(&lt;span style="color:#a6da95">&amp;#39;Sup Title&amp;#39;&lt;/span>, fontsize&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">20&lt;/span>, fontweight&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;bold&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic">#&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Text(&lt;span style="color:#f5a97f">0.5&lt;/span>, &lt;span style="color:#f5a97f">0.98&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Sup Title&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_tZ2E1Puab62Wqe1h.jpg"
width="637"
height="478"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_tZ2E1Puab62Wqe1h_hudb05097d858ee7807943f7950f0a21ab_15067_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_tZ2E1Puab62Wqe1h_hudb05097d858ee7807943f7950f0a21ab_15067_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="319px"
>&lt;/p>
&lt;p>在plt.plot輸入陣列後加上一個格式字串可以用來代表畫線的樣式，&lt;br>
指定linewidth可以修改畫線的粗細。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># r代表紅色，x代表用&amp;#39;x&amp;#39;來表示點，且不畫線&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>plot([&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">4&lt;/span>], [&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">5&lt;/span>,&lt;span style="color:#f5a97f">15&lt;/span>,&lt;span style="color:#f5a97f">18&lt;/span>], &lt;span style="color:#a6da95">&amp;#39;rx&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>matplotlib&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>lines&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Line2D &lt;span style="color:#91d7e3">object&lt;/span> at &lt;span style="color:#f5a97f">0x000000000B856C10&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># b代表藍色，&amp;#39;.&amp;#39;代表用單個小點表示一個點，&amp;#39;--&amp;#39;表示用虛線(dashed line)來畫線&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>plot([&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">4&lt;/span>], [&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">9&lt;/span>,&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">6&lt;/span>], &lt;span style="color:#a6da95">&amp;#39;b.--&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>matplotlib&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>lines&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Line2D &lt;span style="color:#91d7e3">object&lt;/span> at &lt;span style="color:#f5a97f">0x000000000B866310&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># g代表綠色，o代表實心圓，linewidth表示粗度修為3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>plot([&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">4&lt;/span>], [&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">4&lt;/span>,&lt;span style="color:#f5a97f">9&lt;/span>,&lt;span style="color:#f5a97f">16&lt;/span>], &lt;span style="color:#a6da95">&amp;#39;go-&amp;#39;&lt;/span>, linewidth&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">3&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>matplotlib&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>lines&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Line2D &lt;span style="color:#91d7e3">object&lt;/span> at &lt;span style="color:#f5a97f">0x000000000B856F40&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>legend((&lt;span style="color:#a6da95">&amp;#39;red&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;blue&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;green&amp;#39;&lt;/span>), loc&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;upper left&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 畫圖例及決定位置&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>matplotlib&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>legend&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Legend &lt;span style="color:#91d7e3">object&lt;/span> at &lt;span style="color:#f5a97f">0x000000000B757730&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>grid(&lt;span style="color:#f5a97f">True&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 畫出網格&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>其結果應如下所示：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_X8w3JgvPpw1b2zM9.jpg"
width="636"
height="477"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_X8w3JgvPpw1b2zM9_hu7618666e48269573724f7bb1be00d6c6_26386_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_X8w3JgvPpw1b2zM9_hu7618666e48269573724f7bb1be00d6c6_26386_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
>&lt;/p>
&lt;p>在處理過後可畫線的圖以後，如果我們的資料是零散的點，&lt;br>
不需要畫線的話，我們可以用散點圖(scatter)來進行繪製：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>random&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>random(&lt;span style="color:#f5a97f">5&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([&lt;span style="color:#f5a97f">0.22612501&lt;/span>, &lt;span style="color:#f5a97f">0.34256502&lt;/span>, &lt;span style="color:#f5a97f">0.21559228&lt;/span>, &lt;span style="color:#f5a97f">0.17675453&lt;/span>, &lt;span style="color:#f5a97f">0.1082928&lt;/span> ])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> x &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>random&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>random(&lt;span style="color:#f5a97f">500&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> y &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>random&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>random(&lt;span style="color:#f5a97f">500&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>scatter(x, y)　&lt;span style="color:#6e738d;font-style:italic"># 其實用plt.plot(x, y, &amp;#39;o&amp;#39;)也可以啦！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>matplotlib&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>collections&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>PathCollection &lt;span style="color:#91d7e3">object&lt;/span> at &lt;span style="color:#f5a97f">0x000000000B566580&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果要繪製3D的圖的話，要利用plt.axes()，&lt;br>
將其projection設為’3d’。&lt;br>
&lt;strong>同時由於有三維座標，所以要使用ax.scatter3D(x, y, z, color)。&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> z &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>random&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>normal(&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0.2&lt;/span>, &lt;span style="color:#f5a97f">500&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> fig &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>figure()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> ax &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>axes(projection&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;3d&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> ax&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>scatter3D(x, y, z, color&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;blue&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>mpl_toolkits&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>mplot3d&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>art3d&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Path3DCollection &lt;span style="color:#91d7e3">object&lt;/span> at &lt;span style="color:#f5a97f">0x000000000C00A1F0&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> plt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>最後我們會得到一個3D散點圖，其介面是可以按滑鼠左鍵拖曳旋轉的呦！&lt;br>
讀者可以自己嘗試看看～&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_qYZUwEUstVN5q11k.jpg"
width="639"
height="477"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_qYZUwEUstVN5q11k_huc7d09678df9793a6081ca9e3698dce41_36324_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-27-science-drawing-matplotlib/0_qYZUwEUstVN5q11k_huc7d09678df9793a6081ca9e3698dce41_36324_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="321px"
>&lt;/p>
&lt;p>其他其實還有相當多的內容，有興趣的話可以看看官方文件的說明。&lt;br>
像是各種不同種類的圖形、標記方式、標籤等等，&lt;br>
如果使用者想更進一步的話，可以試試看找一些如繪製股票線形的教學範例，&lt;br>
跟著操作看看，相信會更有收穫！&lt;/p>
&lt;p>那麼，我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (26) — 科學運算NumPy：人間用多少滄桑，換多少人的瘋狂</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-26-science-computation-numpy/</link><pubDate>Sun, 11 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-26-science-computation-numpy/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (26) — 科學運算NumPy：人間用多少滄桑，換多少人的瘋狂" />&lt;h2 id="day-26-科學運算numpy人間用多少滄桑換多少人的瘋狂">Day 26 科學運算NumPy：人間用多少滄桑，換多少人的瘋狂
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10247302" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10247302&lt;/a>&lt;/p>
&lt;p>我們今天要來介紹一下NumPy。&lt;br>
一般來說，讀者可能常常會聽到有些人說Python的執行效率相對比較低，&lt;br>
這是真的，因為動態語言會比妥善先編譯過的語言執行速度還慢，&lt;br>
因而我們會看到在像是LeetCode的答案繳交時，&lt;br>
用C/C++/Java可能是執行5 ms(毫秒)的時間，&lt;br>
用Python寫相同邏輯的答案可能要30~100ms。&lt;br>
既然這樣，為什麼現在Python會成為機器學習或AI發展的主流語言呢？&lt;br>
原因就是Python有很多方便的程式庫，&lt;br>
尤其科學運算方面，有不少經過最佳化以及妥善編譯後的程式庫，&lt;br>
使用起來的效率相當的好，NumPy就是其中一個。&lt;/p>
&lt;p>通常狀況下NumPy會搭配到後面的Matplotlib及Keras(TensorFlow)，&lt;br>
用來輸入大量的矩陣及陣列，可以迅速進行運算。&lt;/p>
&lt;p>如果讀者沒有使用其他如Anaconda的方式安裝的話，&lt;br>
要安裝numpy最簡單的方式就是使用pip。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 一般安裝指令&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pip install numpy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 如果發生安裝不起來的狀況，可以嘗試看看使用--user&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pip install &lt;span style="color:#91d7e3;font-weight:bold">--&lt;/span>user
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我們先來介紹NumPy的最基本單位：陣列。&lt;br>
在Python中我們一般使用串列，也有陣列的模組，但一般不會用。&lt;br>
NumPy的陣列叫做ndarray，&lt;br>
它是一系列的相同資料型態的元素組成的，和串列不同，&lt;br>
串列可以這個放字串，另一個放int，但ndarray不允許這麼做喲!&lt;br>
nd是n-dimension(n維)的意思，&lt;br>
Numpy會將維度稱為rank。&lt;br>
單維的陣列就像一個row一樣；&lt;br>
二維的話就像Excel的表格有row/column；&lt;br>
三維就會像一個立方體(但不一定要正立方體)！&lt;/p>
&lt;p>ndarray這麼設定是因為，&lt;br>
當我們在計算資料時，會用到一些矩陣運算或一些其他的科學運算方式，&lt;br>
在這當中會容易同時處理到多個資料，&lt;br>
因此使用比較方整的格式及固定資料型態，&lt;br>
可以讓配置每個元素的記憶體大小比較固定，&lt;br>
同時也便於取用和運算。&lt;br>
(所以會比list和Tuple等效率來得好)&lt;/p>
&lt;p>接下來我們簡單介紹一下numpy的幾個基本指令：&lt;br>
&lt;strong>np.array()：產生一個ndarray&lt;/strong>&lt;br>
&lt;strong>ndim&lt;/strong> ：&lt;strong>維度數&lt;/strong> (rank)&lt;br>
&lt;strong>shape&lt;/strong> ：每個維度的&lt;strong>元素個數&lt;/strong> (以Tuple型式呈現)&lt;br>
&lt;strong>size&lt;/strong> ：&lt;strong>總個數&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">numpy&lt;/span> &lt;span style="color:#c6a0f6">as&lt;/span> &lt;span style="color:#f5a97f">np&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 大家習慣的縮寫方式&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>array([&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>]) &lt;span style="color:#6e738d;font-style:italic"># 一維陣列&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>ndim &lt;span style="color:#6e738d;font-style:italic"># rank&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>size &lt;span style="color:#6e738d;font-style:italic"># 陣列的元素總個數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>shape &lt;span style="color:#6e738d;font-style:italic"># 回傳每個rank有幾個值&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>(&lt;span style="color:#f5a97f">4&lt;/span>,)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> b &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>array([[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>], [&lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>]]) &lt;span style="color:#6e738d;font-style:italic"># 長度要符合阿大大！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>stdin&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>:&lt;span style="color:#f5a97f">1&lt;/span>: VisibleDeprecationWarning: Creating an ndarray &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">ragged&lt;/span> nested sequences (which &lt;span style="color:#91d7e3;font-weight:bold">is&lt;/span> a &lt;span style="color:#91d7e3">list&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#91d7e3">tuple&lt;/span> of lists&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>tuples&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span> ndarrays &lt;span style="color:#c6a0f6">with&lt;/span> different lengths &lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span> shapes) &lt;span style="color:#91d7e3;font-weight:bold">is&lt;/span> deprecated&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span> If you meant to do this, you must specify &lt;span style="color:#a6da95">&amp;#39;dtype=object&amp;#39;&lt;/span> when creating the ndarray
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> b &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>array([[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>], [&lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>]]) &lt;span style="color:#6e738d;font-style:italic"># 正確的二維陣列&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>ndim, b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>size, b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>shape &lt;span style="color:#6e738d;font-style:italic"># 所以我們會看到一個二維陣列，總數8個，2個rows，4個columns&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>(&lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, (&lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>再來我們介紹另一個產生陣列的方式arange()：&lt;br>
arange基本上很像range()的用法，&lt;br>
舉例來說：&lt;br>
np.arange(10) -&amp;gt; 生成一個一維陣列，元素從0&lt;del>9&lt;br>
np.arange(5, 10) -&amp;gt; 生成一個一維陣列，元素從5&lt;/del>9&lt;br>
np.arange(5, 11, 2) -&amp;gt; 生成一個一維陣列，元素為5, 7, 9&lt;br>
此外，還有比較特別的是，它可以接受帶小數點的輸入。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>arange(&lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">8.8&lt;/span>, &lt;span style="color:#f5a97f">1.3&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([&lt;span style="color:#f5a97f">2.&lt;/span> , &lt;span style="color:#f5a97f">3.3&lt;/span>, &lt;span style="color:#f5a97f">4.6&lt;/span>, &lt;span style="color:#f5a97f">5.9&lt;/span>, &lt;span style="color:#f5a97f">7.2&lt;/span>, &lt;span style="color:#f5a97f">8.5&lt;/span>])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>除此以外，也可以用以下幾個來初始化陣列：&lt;br>
&lt;strong>zeros() -&amp;gt; 建立全是0的陣列&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">numpy&lt;/span> &lt;span style="color:#c6a0f6">as&lt;/span> &lt;span style="color:#f5a97f">np&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>zeros((&lt;span style="color:#f5a97f">3&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([&lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>zeros((&lt;span style="color:#f5a97f">3&lt;/span>,)) &lt;span style="color:#6e738d;font-style:italic"># 因為傳入是Tuple，所以多寫一個逗號主要是提醒不要把外面的括號省略&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([&lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>zeros((&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[&lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>]])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>zeros((&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[&lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>, &lt;span style="color:#f5a97f">0.&lt;/span>]])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>ones() -&amp;gt; 建立全是1的陣列&lt;/strong>&lt;br>
(範例就不浪費大家字數了，意思一樣)&lt;/p>
&lt;p>&lt;strong>random.random() -&amp;gt; 從0.0~1.0的隨機值來建立一個陣列(每個元素都是獨立的隨機值)&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>random&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>random((&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">6&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[&lt;span style="color:#f5a97f">0.01287523&lt;/span>, &lt;span style="color:#f5a97f">0.53233704&lt;/span>, &lt;span style="color:#f5a97f">0.79855996&lt;/span>, &lt;span style="color:#f5a97f">0.74661588&lt;/span>, &lt;span style="color:#f5a97f">0.53556373&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">0.01158943&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">0.69197322&lt;/span>, &lt;span style="color:#f5a97f">0.90871892&lt;/span>, &lt;span style="color:#f5a97f">0.24175071&lt;/span>, &lt;span style="color:#f5a97f">0.73861581&lt;/span>, &lt;span style="color:#f5a97f">0.90259941&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">0.74164385&lt;/span>]])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>np.random這個系列底下其實也有很多常用的東西，&lt;br>
比如說如果我們想要一個最常見的常態分布的陣列，&lt;br>
我們可以使用random.normal()，&lt;br>
用法是&lt;strong>np.random.normal(平均值, 標準差, size)&lt;/strong> ：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> mu, sigma &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0.2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> c &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>random&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>normal(mu, sigma, (&lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> c
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[ &lt;span style="color:#f5a97f">0.00521883&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.04220576&lt;/span>, &lt;span style="color:#f5a97f">0.00590997&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.06231083&lt;/span>, &lt;span style="color:#f5a97f">0.07088372&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">0.16073115&lt;/span>, &lt;span style="color:#f5a97f">0.30269475&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.02136197&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.2599142&lt;/span> , &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.03247713&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.00156353&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.43750613&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.01930995&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.00546659&lt;/span>, &lt;span style="color:#f5a97f">0.18611712&lt;/span>, &lt;span style="color:#f5a97f">0.12076204&lt;/span>]])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>後續怎麼畫出來呢？讓我們留待到下一篇再告訴大家吧XD！&lt;/p>
&lt;p>在介紹完初始化陣列後，&lt;br>
我們來講一個numpy的特異功能：&lt;strong>reshape()&lt;/strong> 。&lt;br>
reshape顧名思義，就是將陣列重新捏成你想要的形狀。&lt;br>
比如假設我們做了一個一維的陣列，其size為9。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> s &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>random&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>normal(mu, sigma, &lt;span style="color:#f5a97f">9&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([ &lt;span style="color:#f5a97f">0.04298177&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.14931128&lt;/span>, &lt;span style="color:#f5a97f">0.01522315&lt;/span>, &lt;span style="color:#f5a97f">0.10384426&lt;/span>, &lt;span style="color:#f5a97f">0.06392715&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.02892813&lt;/span>, &lt;span style="color:#f5a97f">0.22175294&lt;/span>, &lt;span style="color:#f5a97f">0.06630997&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.09279769&lt;/span>])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>使用reshape的方式，就是直接指定維度形狀，&lt;br>
只要reshape前後的size算起來是一致即可。&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> s&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>reshape(&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># reshape完後若沒有回頭存起來，並不會修改到s呦!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[ &lt;span style="color:#f5a97f">0.04298177&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.14931128&lt;/span>, &lt;span style="color:#f5a97f">0.01522315&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">0.10384426&lt;/span>, &lt;span style="color:#f5a97f">0.06392715&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.02892813&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">0.22175294&lt;/span>, &lt;span style="color:#f5a97f">0.06630997&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.09279769&lt;/span>]])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> s&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>reshape(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[ &lt;span style="color:#f5a97f">0.04298177&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.14931128&lt;/span>, &lt;span style="color:#f5a97f">0.01522315&lt;/span>, &lt;span style="color:#f5a97f">0.10384426&lt;/span>, &lt;span style="color:#f5a97f">0.06392715&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.02892813&lt;/span>, &lt;span style="color:#f5a97f">0.22175294&lt;/span>, &lt;span style="color:#f5a97f">0.06630997&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.09279769&lt;/span>]])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> s&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>reshape(&lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[ &lt;span style="color:#f5a97f">0.04298177&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.14931128&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">0.01522315&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">0.10384426&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">0.06392715&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.02892813&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">0.22175294&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">0.06630997&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.09279769&lt;/span>]])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> s&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>shape &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> (&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 直接對shape使用Tuple指定也可以呦！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[ &lt;span style="color:#f5a97f">0.04298177&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.14931128&lt;/span>, &lt;span style="color:#f5a97f">0.01522315&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">0.10384426&lt;/span>, &lt;span style="color:#f5a97f">0.06392715&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.02892813&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">0.22175294&lt;/span>, &lt;span style="color:#f5a97f">0.06630997&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">0.09279769&lt;/span>]])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>在取得單一或範圍元素的時候，&lt;br>
陣列基本上跟串列蠻像的：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>arange(&lt;span style="color:#f5a97f">24&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([ &lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">6&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">11&lt;/span>, &lt;span style="color:#f5a97f">12&lt;/span>, &lt;span style="color:#f5a97f">13&lt;/span>, &lt;span style="color:#f5a97f">14&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>, &lt;span style="color:#f5a97f">16&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">17&lt;/span>, &lt;span style="color:#f5a97f">18&lt;/span>, &lt;span style="color:#f5a97f">19&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>, &lt;span style="color:#f5a97f">21&lt;/span>, &lt;span style="color:#f5a97f">22&lt;/span>, &lt;span style="color:#f5a97f">23&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d[&lt;span style="color:#f5a97f">7&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">7&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d[&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">23&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d[&lt;span style="color:#f5a97f">10&lt;/span>:&lt;span style="color:#f5a97f">18&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([&lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">11&lt;/span>, &lt;span style="color:#f5a97f">12&lt;/span>, &lt;span style="color:#f5a97f">13&lt;/span>, &lt;span style="color:#f5a97f">14&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>, &lt;span style="color:#f5a97f">16&lt;/span>, &lt;span style="color:#f5a97f">17&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d[&lt;span style="color:#f5a97f">10&lt;/span>:&lt;span style="color:#f5a97f">18&lt;/span>:&lt;span style="color:#f5a97f">2&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([&lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">12&lt;/span>, &lt;span style="color:#f5a97f">14&lt;/span>, &lt;span style="color:#f5a97f">16&lt;/span>])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>但如果是多維陣列的話，則必須要用逗號分隔不同的維度：&lt;br>
(Python的串列則是用中括號分隔)&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>shape &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[[ &lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">6&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>]],
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span> [[ &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">11&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">12&lt;/span>, &lt;span style="color:#f5a97f">13&lt;/span>, &lt;span style="color:#f5a97f">14&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>]],
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span> [[&lt;span style="color:#f5a97f">16&lt;/span>, &lt;span style="color:#f5a97f">17&lt;/span>, &lt;span style="color:#f5a97f">18&lt;/span>, &lt;span style="color:#f5a97f">19&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">20&lt;/span>, &lt;span style="color:#f5a97f">21&lt;/span>, &lt;span style="color:#f5a97f">22&lt;/span>, &lt;span style="color:#f5a97f">23&lt;/span>]]])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d[&lt;span style="color:#f5a97f">1&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[ &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">11&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">12&lt;/span>, &lt;span style="color:#f5a97f">13&lt;/span>, &lt;span style="color:#f5a97f">14&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>]])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d[&lt;span style="color:#f5a97f">1&lt;/span>:,&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([&lt;span style="color:#f5a97f">15&lt;/span>, &lt;span style="color:#f5a97f">23&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d[&lt;span style="color:#f5a97f">1&lt;/span>:,&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>:]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[&lt;span style="color:#f5a97f">15&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">23&lt;/span>]])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([&lt;span style="color:#f5a97f">12&lt;/span>, &lt;span style="color:#f5a97f">13&lt;/span>, &lt;span style="color:#f5a97f">14&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>:]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([&lt;span style="color:#f5a97f">14&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>另一個功能是可以將值給定到陣列指定的範圍：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>:] &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">99999&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 將指定範圍的值全數換成99999&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[[ &lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">6&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>]],
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span> [[ &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">11&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">12&lt;/span>, &lt;span style="color:#f5a97f">13&lt;/span>, &lt;span style="color:#f5a97f">99999&lt;/span>, &lt;span style="color:#f5a97f">99999&lt;/span>]],
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span> [[ &lt;span style="color:#f5a97f">16&lt;/span>, &lt;span style="color:#f5a97f">17&lt;/span>, &lt;span style="color:#f5a97f">18&lt;/span>, &lt;span style="color:#f5a97f">19&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">20&lt;/span>, &lt;span style="color:#f5a97f">21&lt;/span>, &lt;span style="color:#f5a97f">22&lt;/span>, &lt;span style="color:#f5a97f">23&lt;/span>]]])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>在陣列計算時，我們使用陣列對數字加減乘除時，&lt;br>
可以將其一口氣全部作相同的事情：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[[ &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">6&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>]],
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span> [[ &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">11&lt;/span>, &lt;span style="color:#f5a97f">12&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">13&lt;/span>, &lt;span style="color:#f5a97f">14&lt;/span>, &lt;span style="color:#f5a97f">100000&lt;/span>, &lt;span style="color:#f5a97f">100000&lt;/span>]],
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span> [[ &lt;span style="color:#f5a97f">17&lt;/span>, &lt;span style="color:#f5a97f">18&lt;/span>, &lt;span style="color:#f5a97f">19&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">21&lt;/span>, &lt;span style="color:#f5a97f">22&lt;/span>, &lt;span style="color:#f5a97f">23&lt;/span>, &lt;span style="color:#f5a97f">24&lt;/span>]]])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[[ &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">11&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">14&lt;/span>, &lt;span style="color:#f5a97f">17&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>, &lt;span style="color:#f5a97f">23&lt;/span>]],
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span> [[ &lt;span style="color:#f5a97f">26&lt;/span>, &lt;span style="color:#f5a97f">29&lt;/span>, &lt;span style="color:#f5a97f">32&lt;/span>, &lt;span style="color:#f5a97f">35&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">38&lt;/span>, &lt;span style="color:#f5a97f">41&lt;/span>, &lt;span style="color:#f5a97f">299999&lt;/span>, &lt;span style="color:#f5a97f">299999&lt;/span>]],
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span> [[ &lt;span style="color:#f5a97f">50&lt;/span>, &lt;span style="color:#f5a97f">53&lt;/span>, &lt;span style="color:#f5a97f">56&lt;/span>, &lt;span style="color:#f5a97f">59&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [ &lt;span style="color:#f5a97f">62&lt;/span>, &lt;span style="color:#f5a97f">65&lt;/span>, &lt;span style="color:#f5a97f">68&lt;/span>, &lt;span style="color:#f5a97f">71&lt;/span>]]])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d &lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[[&lt;span style="color:#f5a97f">2.00000000e+00&lt;/span>, &lt;span style="color:#f5a97f">2.33333333e+00&lt;/span>, &lt;span style="color:#f5a97f">2.66666667e+00&lt;/span>, &lt;span style="color:#f5a97f">3.00000000e+00&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">3.33333333e+00&lt;/span>, &lt;span style="color:#f5a97f">3.66666667e+00&lt;/span>, &lt;span style="color:#f5a97f">4.00000000e+00&lt;/span>, &lt;span style="color:#f5a97f">4.33333333e+00&lt;/span>]],
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span> [[&lt;span style="color:#f5a97f">4.66666667e+00&lt;/span>, &lt;span style="color:#f5a97f">5.00000000e+00&lt;/span>, &lt;span style="color:#f5a97f">5.33333333e+00&lt;/span>, &lt;span style="color:#f5a97f">5.66666667e+00&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">6.00000000e+00&lt;/span>, &lt;span style="color:#f5a97f">6.33333333e+00&lt;/span>, &lt;span style="color:#f5a97f">3.33350000e+04&lt;/span>, &lt;span style="color:#f5a97f">3.33350000e+04&lt;/span>]],
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span> [[&lt;span style="color:#f5a97f">7.33333333e+00&lt;/span>, &lt;span style="color:#f5a97f">7.66666667e+00&lt;/span>, &lt;span style="color:#f5a97f">8.00000000e+00&lt;/span>, &lt;span style="color:#f5a97f">8.33333333e+00&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">8.66666667e+00&lt;/span>, &lt;span style="color:#f5a97f">9.00000000e+00&lt;/span>, &lt;span style="color:#f5a97f">9.33333333e+00&lt;/span>, &lt;span style="color:#f5a97f">9.66666667e+00&lt;/span>]]])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>除此以外，常用的矩陣運算numpy也都有所支援，&lt;br>
舉例來說，假設想要算兩個二維矩陣的相乘(內積)，&lt;br>
可以使用np.dot(x, y)或x.dot(y)：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> x &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>arange(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> x&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>shape&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> y &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>arange(&lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> y&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>shape&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> x
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>]])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> y
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[&lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">6&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>]])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> x&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>dot(y)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[&lt;span style="color:#f5a97f">19&lt;/span>, &lt;span style="color:#f5a97f">22&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">43&lt;/span>, &lt;span style="color:#f5a97f">50&lt;/span>]])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>dot(x,y) &lt;span style="color:#6e738d;font-style:italic"># 跟x.dot(y)意思是一樣的&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[&lt;span style="color:#f5a97f">19&lt;/span>, &lt;span style="color:#f5a97f">22&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">43&lt;/span>, &lt;span style="color:#f5a97f">50&lt;/span>]])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>(註：如果是算外積的話，則要用outer())&lt;/p>
&lt;p>如果是想要&lt;strong>對應的位置兩兩相乘，則要用np.multiply()：&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> np&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>multiply(x, y)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>array([[ &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">12&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#f5a97f">21&lt;/span>, &lt;span style="color:#f5a97f">32&lt;/span>]])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>以上簡單介紹了一下numpy的用法，&lt;br>
當然只是蠻簡略的部分，&lt;br>
如果有更多對於詳細函式需求理解的部分，可以直接參考看看numpy的官方文件：&lt;br>
&lt;a class="link" href="https://numpy.org/doc" target="_blank" rel="noopener"
>https://numpy.org/doc&lt;/a>&lt;/p>
&lt;p>那麼，我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (25) — 二元搜尋法模組bisect：我走回從前你往未來飛，遇見對的人錯過交叉點</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-25-binary-search-bisect/</link><pubDate>Sat, 10 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-25-binary-search-bisect/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (25) — 二元搜尋法模組bisect：我走回從前你往未來飛，遇見對的人錯過交叉點" />&lt;h2 id="day-25-二元搜尋法模組bisect我走回從前你往未來飛遇見對的人錯過交叉點">Day 25 二元搜尋法模組bisect：我走回從前你往未來飛，遇見對的人錯過交叉點
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10247301" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10247301&lt;/a>&lt;/p>
&lt;p>接下來，我們來談談二元搜尋法模組bisect。&lt;br>
在談bisect模組之前，我們先來談談&lt;strong>二元搜尋法(binary search)&lt;/strong> 。&lt;/p>
&lt;p>二元搜尋法的原則是，&lt;br>
當有一串排列好的陣列/串列時，&lt;br>
我們可以透過每次去掉一半來迅速找到目標。&lt;br>
為什麼可以做到這點呢？&lt;br>
假定我們有一個串列lt，其長度為n，&lt;br>
由於是已經排列好的(由小排到大)，&lt;br>
我們想要找到一個值target在lt中是否存在，&lt;br>
存在時所在的位置及不存在時應該插入的位置；&lt;/p>
&lt;p>所以當我們取l=0, r=n-1的中間位置mid=(l+r)//2時，會有幾個可能：&lt;br>
&lt;strong>lt[mid] &amp;gt; target&lt;/strong> =&amp;gt; &lt;br>
&lt;strong>代表target在mid左邊的位置，所以要搜尋的範圍就會變成0~mid-1&lt;/strong>&lt;br>
&lt;strong>lt[mid] == target&lt;/strong> =&amp;gt; ** 代表target在mid位置上，可以直接回傳結果**&lt;br>
&lt;strong>lt[mid] &amp;lt; target&lt;/strong> =&amp;gt; ** 代表target在mid右邊的位置，**&lt;br>
&lt;strong>所以要搜尋的範圍就會變成mid+1~r&lt;/strong>&lt;/p>
&lt;p>因此，在尚未找到目標的狀況下，每次所需搜尋的範圍都會折半，&lt;br>
這也就是為什麼會被稱為二元或二分搜尋法的原因。&lt;/p>
&lt;p>二元搜尋法的進一步實作是蠻基本的題目，&lt;br>
如果要嘗試不使用模組來處理的話，&lt;br>
可以參照&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10213268" target="_blank" rel="noopener"
>[Day 7] 從LeetCode學演算法 — 0035. Search Insert Position (Easy)&lt;/a>。&lt;/p>
&lt;p>在其他狀況下，如果題目重點不是考二元搜尋法，&lt;br>
或者在日常使用的話，則可以考慮使用bisect模組。&lt;/p>
&lt;p>在使用bisect模組對某個list進行處理前，&lt;br>
&lt;strong>需留意bisect已經預設這個list是排序過的狀態了&lt;/strong> ！&lt;br>
類似前一篇提到的heapq，&lt;br>
如果必要的話，請先對list進行一般排序的動作。&lt;br>
bisect的常見用法如下：(import bisect)&lt;br>
&lt;strong>bisect_left/bisect_right/bisect：&lt;/strong>&lt;br>
&lt;strong>取得應該插入的位置&lt;/strong> ，當中left/right則代表如果碰到相同的值，&lt;br>
會當成要&lt;strong>插入在所有相同的值的左邊或右邊&lt;/strong> (不給定則&lt;strong>預設為右邊&lt;/strong> )&lt;br>
&lt;strong>insort_left/insort_right/insort：&lt;/strong>&lt;br>
&lt;strong>取得對應的bisect回傳index後，使用這個index來進行插入的動作。&lt;/strong>&lt;br>
上述所有函式的參數都是(串列名a, 要插入的值x, lo=0, hi=len(a))，&lt;br>
沒有特別指定的話就會當作使用整個串列考慮插入的問題。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">bisect&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">5&lt;/span>,&lt;span style="color:#f5a97f">8&lt;/span>,&lt;span style="color:#f5a97f">9&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> bisect&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>bisect_left(lt, &lt;span style="color:#f5a97f">3&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 同值的最左邊&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> bisect&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>bisect_right(lt, &lt;span style="color:#f5a97f">3&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 同值的最右邊&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> bisect&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>bisect(lt, &lt;span style="color:#f5a97f">3&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 預設相當於right&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> bisect&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>insort(lt, &lt;span style="color:#f5a97f">3&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 實際插入&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>順帶一提，使用bisect查找的速度，&lt;br>
扣除掉重覆值找到最左邊/最右邊外，&lt;br>
其時間複雜度為&lt;strong>O(logN)&lt;/strong> 。(log這邊是以2為底的)&lt;/p>
&lt;p>讀者可能會問：&lt;br>
「什麼是複雜度呢？」&lt;br>
簡單來說，複雜度就是用來評估程式作一件事情，&lt;br>
其所需的時間/空間和輸入的資料大小(通常會用N表示)之間，&lt;br>
大致的量級關係。&lt;br>
以list來說，我們使用index()函式取得某個值的所在位置的話，&lt;br>
其時間會是線性的(linear)，&lt;br>
也就是和list的長度成正比，我們會寫作O(N)。&lt;br>
對比起bisect而言，顯然有利用排序這點，&lt;br>
和沒有利用到這點會有根本性的差距，因為一個一個找，&lt;br>
和每次折半找，誰比較省時間就顯而易見了！&lt;/p>
&lt;p>建議讀者有時間的話，&lt;br>
可以再進一步去查找一下關於基礎的複雜度分析，&lt;br>
因為有關程式複雜度分析，對於不論是實務上判斷不同方法之間的優劣，&lt;br>
或是面試的時候，回答考官你的解法的時候，&lt;br>
通常也都要回答關於時間複雜度及空間複雜度的問題，&lt;br>
所以有空的話可以先為自己打個底。&lt;/p>
&lt;p>那麼，我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (24) — 資料結構模組heapq：除了前幾名以外，在座的各位都是垃圾</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-24-data-structure-heapq/</link><pubDate>Fri, 09 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-24-data-structure-heapq/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (24) — 資料結構模組heapq：除了前幾名以外，在座的各位都是垃圾" />&lt;h2 id="day-24-資料結構模組heapq除了前幾名以外在座的各位都是垃圾">Day 24 資料結構模組heapq：除了前幾名以外，在座的各位都是垃圾
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10247299" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10247299&lt;/a>&lt;/p>
&lt;p>昨天的題目，請參見下面的解法：&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10213277" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10213277&lt;/a>&lt;/p>
&lt;p>接下來我們要來談談一個也算是蠻重要的資料結構：&lt;br>
堆積(heap)，以及在Python中對應的模組&lt;strong>heapq&lt;/strong> 。&lt;/p>
&lt;p>什麼是heap呢?&lt;br>
&lt;strong>Heap是一種特別的完全二元樹。&lt;/strong>&lt;br>
這時候讀者又會問了：&lt;br>
那什麼是完全二元樹？&lt;br>
簡單來說，就是&lt;strong>一棵二元樹直到最後一層之前，&lt;br>
由左往右都是填滿節點的狀態，中途沒有空缺，&lt;br>
唯有最後一層的右側會缺節點而已。&lt;/strong>&lt;/p>
&lt;p>那麼，heap是怎麼個特別法呢？&lt;br>
當取一棵完全二元樹中的任何一個節點，&lt;br>
對應&lt;strong>父(母)節點的值永遠小於等於子節點的值&lt;/strong> (就是越上面越小)，&lt;br>
我們就會將其稱為&lt;strong>最小堆積(min heap)&lt;/strong> ；&lt;br>
反之，如果&lt;strong>父(母)節點的值永遠大於等於子節點的值&lt;/strong> ，&lt;br>
我們就會稱為&lt;strong>最大堆積(max heap)&lt;/strong> 。&lt;br>
如果上面兩個狀況都不符合的話就不是堆積囉！&lt;/p>
&lt;p>也因此我們會得到一個特性：&lt;br>
&lt;strong>最大堆積的最大的節點値&lt;/strong> 永遠會在&lt;strong>根節點&lt;/strong> ；&lt;br>
&lt;strong>最小堆積的最小的節點値&lt;/strong> 永遠會在&lt;strong>根節點&lt;/strong> 。&lt;/p>
&lt;p>Python中的heapq的部分呢？&lt;br>
它是使用串列來實作出heap的資料結構的，&lt;br>
且是一個&lt;strong>最小堆積&lt;/strong> 。&lt;br>
由於本篇以初學為導向，我們就不討論heap在二元樹上，&lt;br>
怎麼去處理新增/修改/刪除等操作了，&lt;br>
把焦點著重擺在heapq提供的可行操作上！&lt;/p>
&lt;p>首先，Python可以將list輸入給heapq來排成heap的形狀，&lt;br>
&lt;strong>透過heapq.heapify()函式&lt;/strong> ：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">heapq&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">7&lt;/span>,&lt;span style="color:#f5a97f">4&lt;/span>,&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">8&lt;/span>,&lt;span style="color:#f5a97f">1&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> heapq&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>heapify(lt) &lt;span style="color:#6e738d;font-style:italic"># 直接將lt排成heap的形狀&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 在這個狀態下heap[k] &amp;lt;= heap[2*k+1] 且 heap[k] &amp;lt;= heap[2*k+2]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 上面的k對於0或正整數均滿足(只要index存在)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt &lt;span style="color:#6e738d;font-style:italic"># 已經完成了，但並不是排序，所以看起來不會由小到大是正常的&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>此外，由於現在lt已經是一個heap了，&lt;br>
要插入新的值或要處理其他操作的話，&lt;br>
要使用heapq提供的函式來處理，&lt;br>
常用的操作如下：&lt;br>
&lt;strong>heapify (將一個list轉為heap)&lt;br>
heappush/heappop/heappushpop (放入/取出/先放入後取出)&lt;br>
nlargest/nsmallest (取前n大/前n小的元素)&lt;/strong>&lt;/p>
&lt;p>當中我們只要只使用這些操作來處理，&lt;br>
就可以保證每次做取出(heappop)的時候，其値都會是最小的！&lt;br>
在這邊請留意幾點：&lt;/p>
&lt;ol>
&lt;li>當使用&lt;strong>append或者del&lt;/strong> (也就是用list的方式來動到lt)時，&lt;br>
會影響heap的狀態，若要復原只能重新heapify&lt;/li>
&lt;li>由於這個heap是min heap，&lt;br>
所以&lt;strong>nsmallest(取前n小元素)速度會比較快&lt;/strong> ，較有效率，&lt;br>
nlargest(取前n大元素)是較沒有效率的，&lt;br>
官方會建議要這樣取不如直接先排序。&lt;/li>
&lt;li>對於2來說，其實也有解法，&lt;br>
就是當&lt;strong>需要用到max heap時，&lt;/strong>&lt;br>
我們手動&lt;strong>將每個元素加上一個負號代入&lt;/strong> ，&lt;br>
如此一來就可以將min heap當max heap來用啦！&lt;/li>
&lt;/ol>
&lt;p>我們拿LeetCode的1046題來當例子：&lt;br>
&lt;a class="link" href="https://leetcode.com/problems/last-stone-weight/" target="_blank" rel="noopener"
>https://leetcode.com/problems/last-stone-weight/&lt;/a>&lt;br>
題目大意是，&lt;br>
有一堆石頭，石頭重量均為正整數(阿不然是會有負的嗎？)。&lt;br>
每次我們拿最重的兩個石頭x, y(x &amp;lt;= y)相撞，&lt;br>
結果會有兩種：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>x == y&lt;/strong> 的時候，兩顆石頭都會毀掉消失&lt;/li>
&lt;li>&lt;strong>x != y&lt;/strong> 的時候，只會剩下一顆石頭，重量為y — x&lt;br>
撞到最後，最多只會剩下1顆石頭，請問石頭的重量是多少？&lt;br>
(沒有石頭的話答案就視為0)&lt;/li>
&lt;/ol>
&lt;p>依照這個題目，我們會發現，&lt;br>
只要我們能建立一個max heap，&lt;br>
一切都會變得很輕鬆！&lt;br>
為什麼呢？&lt;br>
因為每次我們要拿兩個最重的相撞，&lt;br>
也就是每一輪要從heap當中取出兩個最大的值，&lt;br>
相減過後還有剩的，再放入heap中，&lt;br>
直到heap空掉，或者只剩1個值為止。&lt;/p>
&lt;p>因此，我們可以如前面所提到的那樣，&lt;br>
先將石頭的重量加上負號並生成一個list，&lt;br>
再用heapq來對其處理。&lt;br>
我們直接來上程式碼，請對照註解來了解整個思路。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Solution&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">lastStoneWeight&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, stones: List[&lt;span style="color:#91d7e3">int&lt;/span>]) &lt;span style="color:#91d7e3;font-weight:bold">-&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">heapq&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> h &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>x &lt;span style="color:#c6a0f6">for&lt;/span> x &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> stones] &lt;span style="color:#6e738d;font-style:italic"># list comprehension&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> heapq&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>heapify(h) &lt;span style="color:#6e738d;font-style:italic"># 生成最小堆積&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">while&lt;/span> &lt;span style="color:#91d7e3">len&lt;/span>(h) &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 堆積內還有超過1顆的石頭&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> y &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> heapq&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>heappop(h) &lt;span style="color:#6e738d;font-style:italic"># 取第一顆，重量應該是-y&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> x &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> heapq&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>heappop(h) &lt;span style="color:#6e738d;font-style:italic"># 取第二顆，重量應該是-x&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> y &lt;span style="color:#91d7e3;font-weight:bold">!=&lt;/span> x: &lt;span style="color:#6e738d;font-style:italic"># 兩顆沒有一起毀掉&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 差值應該是-y+x，但為了放入heap中，要再加上一個負號&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> heapq&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>heappush(h, y &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> x) &lt;span style="color:#6e738d;font-style:italic"># 再放入heap中&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> &lt;span style="color:#91d7e3">len&lt;/span>(h) &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 全部石頭都毀掉了，回傳0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">else&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>h[&lt;span style="color:#f5a97f">0&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 回傳剩下的石頭的值，別忘了要負負得正&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>除了上述的需求外，&lt;br>
heap類型也適用於限縮個數的狀況。&lt;br>
比如說今天想要找一個班級的最強的前5名，&lt;br>
我們可以讓heap在個數尚未達到5個時使用&lt;strong>heappush()&lt;/strong> ；&lt;br>
而達到5個後呢？就使用&lt;strong>heappushpop()&lt;/strong> ，&lt;br>
先放入值，再將最弱的取出來丟掉。&lt;br>
所以&lt;strong>當碰到”除了前5名以外，在座的各位都是垃圾”類型&lt;/strong> 的情況，&lt;br>
特別適合使用heap來進行操作，可以有效降低需要保留的元素個數。&lt;/p>
&lt;p>那麼，我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (23) — 資料結構模組deque：旁人來來去去像行雲流水</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-23-data-structure-deque/</link><pubDate>Thu, 08 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-23-data-structure-deque/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (23) — 資料結構模組deque：旁人來來去去像行雲流水" />&lt;h2 id="day-23-資料結構模組deque旁人來來去去像行雲流水">Day 23 資料結構模組deque：旁人來來去去像行雲流水
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10247295" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10247295&lt;/a>&lt;/p>
&lt;h3 id="先來解一下上次的練習吧">先來解一下上次的練習吧！
&lt;/h3>&lt;p>我們唯一需要動的應該只有calculate的函式，&lt;br>
當 p1 &amp;lt; p2 時，將兩個值交換即可。&lt;br>
別忘了交換應該要連同Entry裡面的值都一起換(price1/price2)。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic">### calculate函式用來接受按鈕事件，取得商品價格及折扣方式，計算後輸出&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">calculate&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 每次要計算時，都讓按鈕顯示計算哪一個折扣法&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> btnstr&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#a6da95">&amp;#39;計算&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> radiostr&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get() &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;中&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 用try...except...的方式來避免掉輸入的不是數字&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">try&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> choice &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> radiostr&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get() &lt;span style="color:#6e738d;font-style:italic"># radiobutton的選擇項&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> p1 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(price1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> p2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(price2&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> p1 &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;=&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span> p2 &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;=&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 如果輸入&amp;lt;=0的數字也當成例外處理&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">raise&lt;/span> &lt;span style="color:#f5a97f">Exception&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> p1 &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span> p2:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> p1, p2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> p2, p1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> price1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#91d7e3">str&lt;/span>(p1))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> price2&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#91d7e3">str&lt;/span>(p2))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>(下面沒有變動XD)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我們今天要來談談deque的應用，&lt;br>
我們前面已經在&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10243343" target="_blank" rel="noopener"
>第十一篇&lt;/a>的部分提到過deque的用法，這篇主要要來補充deque作為queue時的常見狀況。&lt;/p>
&lt;p>一般我們提到兩種資料結構：&lt;br>
queue(佇列)或stack(堆疊)的概念，&lt;br>
其實就是先進先出(FIFO, First-In-First-Out)或&lt;br>
先進後出(First-In-Last-Out)的區別。&lt;/p>
&lt;p>queue就好像排隊一樣，當然是先排的先被服務到(除非有人插隊XD)；&lt;br>
stack則像是一疊文件一樣，假設你都拿最上面的，&lt;br>
當老闆又往上放新的文件(工作)給你的時候，&lt;br>
你再拿就會拿到最新放上去的囉！&lt;br>
這兩者在不同的程式語言有時候會有不同的稱呼和變形，&lt;br>
但本質是不變的。&lt;/p>
&lt;p>那麼，什麼狀況下我們寫程式會容易用到queue(deque)呢?&lt;br>
最常見的狀況是遇到一個Tree(樹)的問題的時候！&lt;br>
那，什麼是樹呢？&lt;br>
好問題！這個問題應該要用比較長的篇幅解釋，&lt;br>
所以請讀者參閱拙作&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10213276" target="_blank" rel="noopener"
>從LeetCode學演算法的第十四篇&lt;/a>，&lt;br>
下面我們再繼續。&lt;/p>
&lt;p>不囉嗦，我們直接上一道題目作為範例吧！&lt;br>
上面的連結應該已經介紹過二元樹了，&lt;br>
最簡單來說，一棵二元樹就是由根節點(root)，&lt;br>
及左子樹(left tree)/右子樹(right tree)所構成。&lt;br>
每個節點上有可能連結左右節點，&lt;br>
也可能沒有連接，稱為NIL，在Python為None。&lt;br>
如果我們今天想要按照一層一層順序來走遍整個樹，&lt;br>
並分層記錄的話，該怎麼做呢？&lt;br>
這個問題通常被稱為Level-order Traversal。(層序遍歷)&lt;br>
讀者可以前往LeetCode的題目看更詳細的描述。&lt;br>
&lt;a class="link" href="https://leetcode.com/problems/binary-tree-level-order-traversal/" target="_blank" rel="noopener"
>https://leetcode.com/problems/binary-tree-level-order-traversal/&lt;/a>&lt;br>
我們可以先走第一層，再走第二層，以此類推，&lt;br>
那麼這中間走完第一層時，怎麼知道第二層有哪些節點呢？&lt;br>
按順序的話，我們應該將第一層的每個節點的左節點/右節點，&lt;br>
放入到一個可以按照放入的順序處理的資料結構，&lt;br>
接著再從這個資料結構裡一個一個拿出來(這時候是第二層了!)，&lt;br>
找每一個的左右節點，再放進去……&lt;br>
咦？這個資料結構不就是queue嗎XD？&lt;/p>
&lt;p>我們在解題和寫程式的時候，&lt;br>
可以先把要怎麼做大略寫出來，&lt;br>
再根據這個概念和做法，寫出具體的程式。&lt;/p>
&lt;p>以這個問題來說，&lt;br>
題目應該會給出這個二元樹的根節點root，&lt;br>
接著要做的事情就如上面說的一樣，但我們需要一些細部的東西：&lt;/p>
&lt;ol>
&lt;li>開一個res(result)作為存放答案用的串列。&lt;/li>
&lt;li>我們先檢查root是否存在，有些題目壞壞的會給None，&lt;br>
如果不存在就直接回傳空的答案給它!&lt;/li>
&lt;li>將root放入我們檢查的資料結構(因為它是第一層)，我們先叫它q吧!&lt;/li>
&lt;li>開始一個迴圈，當q裡面還有節點時，代表還要繼續。&lt;/li>
&lt;li>我們先記下q裡面的個數(命名為cnt)，後面放進去q的都是下一層的節點。&lt;/li>
&lt;li>接著先設定一個level變數，用以記錄這層的節點值們。&lt;/li>
&lt;li>在裡面再開一個迴圈，這次直接指定跑cnt次，&lt;br>
這樣所有這層的節點都會被我們取出來。&lt;/li>
&lt;li>內層迴圈中，每次從q取出一個節點(popleft)，&lt;br>
將節點值(.value)append到level中，&lt;/li>
&lt;li>檢查左節點，如果不是None的話就將節點放到q裡。&lt;/li>
&lt;li>檢查右節點，做相同的事情XD&lt;/li>
&lt;li>內層迴圈結束後，這時候我們拿到一整層的節點值，&lt;br>
我們應該要將其append到res這個結果裡。&lt;/li>
&lt;li>最後全部處理完後，可以將res回傳。&lt;/li>
&lt;/ol>
&lt;p>好啦!經過上面的步驟，有沒有發現我們其實已經把程式寫完了呢？&lt;br>
只要按著順序對照，應該可以順利寫出答案。&lt;/p>
&lt;p>那麼，我們就來看看實際的做法：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># Definition for a binary tree node.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># class TreeNode:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># def __init__(self, x):&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># self.val = x&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># self.left = None&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># self.right = None&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">collections&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> deque
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Solution&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">levelOrder&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, root: TreeNode) &lt;span style="color:#91d7e3;font-weight:bold">-&amp;gt;&lt;/span> List[List[&lt;span style="color:#91d7e3">int&lt;/span>]]:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> res &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [] &lt;span style="color:#6e738d;font-style:italic"># result，用以記錄結果&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">not&lt;/span> root: &lt;span style="color:#c6a0f6">return&lt;/span> res &lt;span style="color:#6e738d;font-style:italic"># 我們有提過，if not可以用來檢查東西是不是空的&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> q &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> deque([root]) &lt;span style="color:#6e738d;font-style:italic"># deque的初始化，要以list的形式放入&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">while&lt;/span> q: &lt;span style="color:#6e738d;font-style:italic"># 當q還有節點(同樣這相當於檢查是不是空的)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cnt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">len&lt;/span>(q) &lt;span style="color:#6e738d;font-style:italic"># deque支援len的操作(取長度)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> level &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [] &lt;span style="color:#6e738d;font-style:italic"># 記錄每層的節點值&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> _ &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(cnt): &lt;span style="color:#6e738d;font-style:italic"># _沒有特別意思，通常是當沒有要在迴圈內用到時可以使用&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> n &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> q&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>popleft() &lt;span style="color:#6e738d;font-style:italic"># popleft等於從deque的左邊取出，也就是queue的用法&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> level&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>append(n&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>val) &lt;span style="color:#6e738d;font-style:italic"># 取值&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> n&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>left: q&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>append(n&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>left) &lt;span style="color:#6e738d;font-style:italic"># 將左節點放入q&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> n&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>right: q&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>append(n&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>right) &lt;span style="color:#6e738d;font-style:italic"># 將右節點放入q&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> res&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>append(level) &lt;span style="color:#6e738d;font-style:italic"># 每層完成後，要將一整層的節點值list放到res中&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> res &lt;span style="color:#6e738d;font-style:italic"># 回傳，結束！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>應該不算太難(吧)…?&lt;br>
請務必要看完樹的那篇定義再來看這篇喲！&lt;br>
總言之，deque作為queue使用時，主要會用popleft()跟append()來操作，&lt;br>
同時它會適合按先後順序放入及取出的情況。&lt;/p>
&lt;p>練習題目的話，&lt;br>
讀者可以再嘗試看看LeetCode的另一題：&lt;br>
101. Symmetric Tree&lt;/p>
&lt;p>那麼，我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (22) — 圖形化使用者介面Tkinter：直到現在，我還默默的等待</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-22-gui-interface-tkinter/</link><pubDate>Wed, 07 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-22-gui-interface-tkinter/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (22) — 圖形化使用者介面Tkinter：直到現在，我還默默的等待" />&lt;h2 id="day-22-圖形化使用者介面tkinter直到現在我還默默的等待">Day 22 圖形化使用者介面Tkinter：直到現在，我還默默的等待
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10247294" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10247294&lt;/a>&lt;/p>
&lt;p>上次的練習我們就不驗收了，相信大家應該可以做得好的XD!&lt;br>
今天我們來聊聊Python的圖形化使用者介面。&lt;br>
如果讀者手上有一些Python的入門書，&lt;br>
相信在這個單元之前，常常會看到一個烏龜的範例(Turtle模組)，&lt;br>
那就是一種會顯示圖形化的介面其中一種。&lt;br>
通常我們會將有圖形化的互動介面稱為GUI(Graphical User Interface)介面，&lt;br>
在Python當中如果算上其他的GUI介面的話，&lt;br>
其實相當多種，最常見的有&lt;strong>Tkinter/PyQT/WxPython/Kivy&lt;/strong> 等，&lt;br>
如果就一般人而言，沒有特殊需求的話，&lt;br>
使用內建的Tkinter模組作為開頭應該就很足夠囉！&lt;/p>
&lt;p>每個tkinter的主體會先由tkinter.Tk()的物件生成，&lt;br>
通常讀者們應該會看到大部分的範例會&lt;strong>將tkinter縮寫成tk&lt;/strong> ，&lt;br>
並將生成的物件&lt;strong>命名為window或win&lt;/strong> (代表這個視窗介面)，&lt;br>
後續的操作也都跟其息息相關。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">tkinter&lt;/span> &lt;span style="color:#c6a0f6">as&lt;/span> &lt;span style="color:#f5a97f">tk&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> win &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Tk() &lt;span style="color:#6e738d;font-style:italic"># 如果使用直譯器的話，在這行Enter後就會先看到一個視窗了！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>title(&lt;span style="color:#a6da95">&amp;#39;從零開始學Python：第二件X折？&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 更改視窗的標題&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>geometry(&lt;span style="color:#a6da95">&amp;#39;800x400&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 修改視窗大小(寬x高)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>resizable(&lt;span style="color:#f5a97f">False&lt;/span>, &lt;span style="color:#f5a97f">False&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 如果不想讓使用者能調整視窗大小的話就均設為False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>iconbitmap(&lt;span style="color:#a6da95">&amp;#39;unicorn.ico&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 更改左上角的icon圖示&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>mainloop() &lt;span style="color:#6e738d;font-style:italic"># 在一般python xxx.py的執行方式中，呼叫mainloop()才算正式啟動&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>(註：下面的操作我們都先在直譯器中嘗試，請先不要下mainloop()以免無法再輸入指令)&lt;br>
我們在上面的示範中使用了一個icon檔，是一隻打瞌睡的獨角獸：&lt;br>
&lt;a class="link" href="https://www.flaticon.com/free-icon/unicorn_3468081" target="_blank" rel="noopener"
>https://www.flaticon.com/free-icon/unicorn_3468081&lt;/a>&lt;br>
但下載下來的時候是png檔，而使用圖示只會接受&lt;strong>icon bitmap&lt;/strong> 的格式，&lt;br>
使用者可以利用上一篇教的PIL來進行轉換：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">PIL&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> Image
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Image&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>open(&lt;span style="color:#a6da95">&amp;#39;unicorn.png&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>save(&lt;span style="color:#a6da95">&amp;#39;unicorn.ico&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>或者，也可以&lt;strong>用另一個iconphoto()方法&lt;/strong> ，&lt;br>
它可以接受一些其他類型的圖片(png可以，但jpg不行)&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>iconphoto(&lt;span style="color:#f5a97f">True&lt;/span>, tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>PhotoImage(file&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;./unicorn.png&amp;#39;&lt;/span>))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來讓我們介紹Frame。&lt;strong>Frame可以想成是一個區塊&lt;/strong> ，&lt;br>
用來切分視窗以方便進行排版，&lt;br>
舉例來說，如果我們想要在上面塞一個寬度800，高度為100的Frame：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># bg可以用顏色名稱，或者使用&amp;#39;#FF0000&amp;#39;的RGB形式來給定&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> fm &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Frame(win, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;violet&amp;#39;&lt;/span>, width&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">800&lt;/span>, height&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">100&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> fm&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack() &lt;span style="color:#6e738d;font-style:italic"># 設定Frame的排版方法，這行完成後才會在視窗上顯現&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-22-gui-interface-tkinter/image-001.jpg"
width="800"
height="429"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-22-gui-interface-tkinter/image-001_hu1bdb03f58f805f5c3955af8adbb8a75c_12919_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-22-gui-interface-tkinter/image-001_hu1bdb03f58f805f5c3955af8adbb8a75c_12919_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="186"
data-flex-basis="447px"
>&lt;/p>
&lt;p>(註：&lt;strong>排版方法有pack(), grid(), place()三種&lt;/strong> ，&lt;br>
若讀者有興趣可再自行深入研究。)&lt;/p>
&lt;p>再來是&lt;strong>按鈕Button&lt;/strong> 的部分，值得注意的是，&lt;br>
我們可以&lt;strong>運用textvariable的參數來給定tk.StringVar變數&lt;/strong> ，&lt;br>
用來讓我們可以動態調整按鈕上的字的變化。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">calculate&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> btnstr&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#a6da95">&amp;#39;計算中...&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> btnstr &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>StringVar() &lt;span style="color:#6e738d;font-style:italic"># 初始化tk的字串變數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> btnstr&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#a6da95">&amp;#39;按我計算&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> btn &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Button(win, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;violet&amp;#39;&lt;/span>, fg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;white&amp;#39;&lt;/span>, textvariable&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>btnstr, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;微&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>軟正黑體&lt;span style="color:#a6da95">&amp;#39;, 20), command=calculate)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> btn&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>在上面的例子中，我們初始化了一個btnstr的變數，&lt;br>
並且將其在開一個Button變數時，作為文字變數(StringVar)給定進去；&lt;br>
同時，當按鈕被按下時，calculate這個函式將被呼叫，&lt;br>
從而將按鈕上的字進行改變。&lt;br>
&lt;strong>tk的變數有StringVar, IntVar, DoubleVar&lt;/strong> 等三種，&lt;br>
其使用方式是&lt;strong>set()用以設定變數，get()用以取得變數內容&lt;/strong> 。&lt;/p>
&lt;p>如果我們單純想要顯示文字，不想被使用者修改的話，&lt;br>
應該要使用&lt;strong>文字標籤(Label)&lt;/strong> ；&lt;br>
如果是要被輸入的文字方塊的話，&lt;br>
則可以使用&lt;strong>文字輸入欄(Entry)&lt;/strong> ；&lt;br>
想要使用單選的選項的話，&lt;br>
則可以使用&lt;strong>單選按鈕(Radiobutton)&lt;/strong> ；&lt;br>
想要跳出提示方塊的話，&lt;br>
就要使用&lt;strong>對話框(Messagebox)&lt;/strong> 。&lt;/p>
&lt;p>由於這當中嘗試一些排版和顏色太過複雜，&lt;br>
我們直接上最後的程式碼給讀者，&lt;br>
請一段一段沿著往下讀，&lt;br>
每一段可以先貼到直譯器上跑，&lt;br>
可以看到對應的元件生成的樣貌，&lt;br>
這樣會更為清楚每一段在作什麼呦！&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">tkinter&lt;/span> &lt;span style="color:#c6a0f6">as&lt;/span> &lt;span style="color:#f5a97f">tk&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">tkinter.messagebox&lt;/span> &lt;span style="color:#c6a0f6">as&lt;/span> &lt;span style="color:#f5a97f">msg&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># messagebox要另行匯入，否則會出錯。&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">23
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">24
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic">### calculate函式用來接受按鈕事件，取得商品價格及折扣方式，計算後輸出&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">calculate&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 每次要計算時，都讓按鈕顯示計算哪一個折扣法&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> btnstr&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#a6da95">&amp;#39;計算&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> radiostr&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get() &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;中&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 用try...except...的方式來避免掉輸入的不是數字&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">try&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> choice &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> radiostr&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get() &lt;span style="color:#6e738d;font-style:italic"># radiobutton的選擇項&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> p1 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(price1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> p2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(price2&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> p1 &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;=&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span> p2 &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;=&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 如果輸入&amp;lt;=0的數字也當成例外處理&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">raise&lt;/span> &lt;span style="color:#f5a97f">Exception&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> choice &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#a6da95">&amp;#39;一&amp;#39;&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 買二件88折&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> p &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">0.88&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> (p1 &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> p2)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">elif&lt;/span> choice &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#a6da95">&amp;#39;二&amp;#39;&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 第二件6折&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> p &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> p1 &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> p2 &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">0.6&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">else&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 第二件半價&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> p &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> p1 &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> p2 &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">0.5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> total&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#91d7e3">str&lt;/span>(&lt;span style="color:#91d7e3">int&lt;/span>(p))) &lt;span style="color:#6e738d;font-style:italic"># 顯示總額&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">except&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 例外處理：先全部歸0，再跳提示視窗&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> price1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#a6da95">&amp;#39;0&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> price2&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#a6da95">&amp;#39;0&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> total&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#a6da95">&amp;#39;0&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> msg&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>showerror(&lt;span style="color:#a6da95">&amp;#39;輸入錯誤!&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;請輸入正確的數字!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> btnstr&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#a6da95">&amp;#39;算選項&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> radiostr&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get())
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic">### select會在選中了某個折扣的時候被呼叫，此時會再呼叫calculate快速計算比較方便&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">select&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> btnstr&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#a6da95">&amp;#39;算選項&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> radiostr&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> calculate()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic">#### 主視窗生成&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>win &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Tk()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>title(&lt;span style="color:#a6da95">&amp;#39;從零開始學Python：第二件X折？&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>geometry(&lt;span style="color:#a6da95">&amp;#39;800x220&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>resizable(&lt;span style="color:#f5a97f">False&lt;/span>, &lt;span style="color:#f5a97f">False&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>iconbitmap(&lt;span style="color:#a6da95">&amp;#39;unicorn.ico&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic">### Frame fm_cal: 放計算按鈕、&amp;#34;總額&amp;#34;文字label、總額金額顯示label&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>fm_cal &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Frame(win, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;skyblue&amp;#39;&lt;/span>, width&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">800&lt;/span>, height&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">100&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># fill表示沒填滿的部分是否填滿，BOTH表示xy方向都填滿，讀者可以試試看去掉的差別&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>fm_cal&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(fill&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>BOTH)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>btnstr &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>StringVar() &lt;span style="color:#6e738d;font-style:italic"># 初始化tk的字串變數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>btnstr&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#a6da95">&amp;#39;按我計算&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>btn &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Button(fm_cal, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;#71C973&amp;#39;&lt;/span>, fg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;white&amp;#39;&lt;/span>, textvariable&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>btnstr, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;微軟正黑體&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>), command&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>calculate, pady&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># pad是指兩個元件之間空出多少距離&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># side代表排版對齊時跟上個元件從哪個方向開始對齊&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>btn&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>LEFT, padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>, pady&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># padx/pady分別就是x方向跟y方向&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>lbl_text &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Label(fm_cal, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;#F95E62&amp;#39;&lt;/span>, fg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;white&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> text&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;總額：&amp;#39;&lt;/span>, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;微軟正黑體&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>, pady&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl_text&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>LEFT, padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">108&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>total &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>StringVar() &lt;span style="color:#6e738d;font-style:italic"># 初始化tk的字串變數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>total&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>set(&lt;span style="color:#a6da95">&amp;#39;0&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl_total &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Label(fm_cal, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;#F95E62&amp;#39;&lt;/span>, fg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;white&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> text&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;0&amp;#39;&lt;/span>, textvariable&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>total, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;微軟正黑體&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>, pady&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl_total&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>LEFT, padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">57&lt;/span>, pady&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic">### Frame fm_lbl: 放標籤及Radiobutton(折數)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>fm_lbl &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Frame(win, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;#FF9955&amp;#39;&lt;/span>, width&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">800&lt;/span>, height&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">150&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>fm_lbl&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>TOP, fill&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>BOTH)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>lbl1 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Label(fm_lbl, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;#F95E62&amp;#39;&lt;/span>, fg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;white&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> text&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;第一件價格&amp;#39;&lt;/span>, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;微軟正黑體&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>, pady&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>LEFT, padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>, pady&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl_plus &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Label(fm_lbl, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;#FF9955&amp;#39;&lt;/span>, fg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;black&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> text&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;及&amp;#39;&lt;/span>, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;微軟正黑體&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>, pady&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl_plus&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>LEFT, padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Label(fm_lbl, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;#F95E62&amp;#39;&lt;/span>, fg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;white&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> text&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;第二件價格&amp;#39;&lt;/span>, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;微軟正黑體&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>, pady&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl2&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>LEFT, padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl_plus2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Label(fm_lbl, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;#FF9955&amp;#39;&lt;/span>, fg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;black&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> text&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;及&amp;#39;&lt;/span>, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;微軟正黑體&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>, pady&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl_plus2&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>LEFT, padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl_coupon &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Label(fm_lbl, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;#F95E62&amp;#39;&lt;/span>, fg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;white&amp;#39;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> text&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;折扣&amp;#39;&lt;/span>, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;微軟正黑體&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>, pady&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl_coupon&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>LEFT, padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic">### Frame fm_rad: 放Radiobutton(框一組自己對齊)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>fm_rad &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Frame(fm_lbl, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;#FF9955&amp;#39;&lt;/span>, width&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">150&lt;/span>, height&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">150&lt;/span>, padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">30&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>fm_rad&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>LEFT, fill&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>BOTH)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># StringVar的初始化值在第二個參數，第一個要填None&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>radiostr &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>StringVar(&lt;span style="color:#f5a97f">None&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;一&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># command會對應到選取時呼叫的函式，同時當選擇到它，value的值會放入variable的變數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>r1 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Radiobutton(fm_rad, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;#FF9955&amp;#39;&lt;/span>, text&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;買兩件88折&amp;#39;&lt;/span>, variable&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>radiostr, value&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;一&amp;#39;&lt;/span>, command&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>select)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>r1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(anchor&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>W) &lt;span style="color:#6e738d;font-style:italic"># 另一個對齊方式，由上而下，但上下之間是靠左對齊&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>r2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Radiobutton(fm_rad, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;#FF9955&amp;#39;&lt;/span>, text&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;第二件6折&amp;#39;&lt;/span>, variable&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>radiostr, value&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;二&amp;#39;&lt;/span>, command&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>select)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>r2&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(anchor&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>W)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>r3 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Radiobutton(fm_rad, bg&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;#FF9955&amp;#39;&lt;/span>, text&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;第二件半價&amp;#39;&lt;/span>, variable&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>radiostr, value&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;三&amp;#39;&lt;/span>, command&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>select)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>r3&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(anchor&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>W)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic">### Frame fm_ent: 放entry(輸入兩件商品分別的價格)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>fm_ent &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Frame(win, width&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">800&lt;/span>, height&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">200&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>fm_ent&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>TOP, fill&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>BOTH)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># ent1對應到price1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>price1 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>StringVar(&lt;span style="color:#f5a97f">None&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;0&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ent1 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Entry(fm_ent, width&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">20&lt;/span>, justify&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;center&amp;#39;&lt;/span>, textvariable&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>price1)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ent1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>LEFT, padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">17&lt;/span>, pady&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">7&lt;/span>, fill&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Y)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 為了排版增加的空白label&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl_empty &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Label(fm_ent,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> text&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;　&amp;#39;&lt;/span>, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;微軟正黑體&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>),
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">20&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lbl_empty&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>LEFT)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># ent1對應到price2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>price2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>StringVar(&lt;span style="color:#f5a97f">None&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;0&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ent2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Entry(fm_ent, width&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">20&lt;/span>, justify&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;center&amp;#39;&lt;/span>, textvariable&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>price2)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ent2&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pack(side&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>LEFT, padx&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">17&lt;/span>, pady&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">7&lt;/span>, fill&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>tk&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Y)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 開始整個主程式&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>win&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>mainloop()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>最後的成果大概像這樣子：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-22-gui-interface-tkinter/image-002.jpg"
width="800"
height="254"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-22-gui-interface-tkinter/image-002_hue107d2205f567dac1acd9dfb951e6664_29528_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-22-gui-interface-tkinter/image-002_hue107d2205f567dac1acd9dfb951e6664_29528_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="314"
data-flex-basis="755px"
>&lt;/p>
&lt;p>輸入錯誤時的對話框：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-22-gui-interface-tkinter/image-003.jpg"
width="214"
height="174"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-22-gui-interface-tkinter/image-003_hu19a0b3b6f964a155a7287c709e552de7_6010_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-22-gui-interface-tkinter/image-003_hu19a0b3b6f964a155a7287c709e552de7_6010_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="122"
data-flex-basis="295px"
>&lt;/p>
&lt;p>這當中其實還有很多沒有講到的東西和元件，&lt;br>
像是Listbox/Scrollbar等。&lt;br>
但實在太多可以用的了，所以我們就先不管啦!&lt;br>
有興趣的讀者可以再行深入玩玩看其他的元件呦XD!&lt;/p>
&lt;h3 id="那麼今天也來一點簡單的練習吧">那麼今天也來一點簡單的練習吧！
&lt;/h3>&lt;ol>
&lt;li>我們知道其實這個程式可能存在一些漏洞，&lt;br>
最顯眼的應該就是在屈X氏的第二件O折這種事情，&lt;br>
第二件一般都應該要取價低者計算才對。&lt;br>
請想辦法修改上面的程式，使得當使用者有正常輸入數字，&lt;br>
碰到上述狀況時，主動將價格排列正確，&lt;br>
並同樣計算出正確的結果。&lt;/li>
&lt;li>(Optional，可以不做)事實上，&lt;br>
tkinter也有人撰寫可以在GUI界面拉出整個排版的程式，&lt;br>
請有興趣的讀者在GitHub(&lt;a class="link" href="https://github.com/%29%E4%B8%8A%E9%80%B2%E8%A1%8C%E6%90%9C%E5%B0%8B%EF%BC%8C" target="_blank" rel="noopener"
>https://github.com/)上進行搜尋，&lt;/a>&lt;br>
(例如”tkinter gui”)&lt;br>
並找到一個適合你使用的介面，嘗試操作看看。&lt;/li>
&lt;/ol>
&lt;p>那麼，我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (21) —  基本圖形處理Pillow：花下是誰對影成雙</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-21-image-processing-with-pillow/</link><pubDate>Tue, 06 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-21-image-processing-with-pillow/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (21) —  基本圖形處理Pillow：花下是誰對影成雙" />&lt;h2 id="day-21-基本圖形處理pillow花下是誰對影成雙">Day 21 基本圖形處理Pillow：花下是誰對影成雙
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10247292" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10247292&lt;/a>&lt;/p>
&lt;h3 id="我們先來解昨天的練習吧">我們先來解昨天的練習吧！
&lt;/h3>&lt;p>我們整理一下三種解的寫法，並且分別改名成cs1, cs2, cs3，&lt;br>
那麼計算時要注意的有：&lt;/p>
&lt;ol>
&lt;li>為了確保有在運行，我們多加一個print()，可以自行拿掉。&lt;/li>
&lt;li>cs2記得要給起始的字典，當然也可以直接在(n, dic)這邊給入也行。&lt;/li>
&lt;li>記得下globals=globals()。&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">timeit&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">cs1&lt;/span>(n):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> n &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span> n &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> n
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> cs1(n&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> cs1(n&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">cs2&lt;/span>(n, dic):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> n &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> dic:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> dic[n]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> dic[n] &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> cs2(n&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, dic) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> cs2(n&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>, dic)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> dic[n]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># dic = {1 : 1, 2 : 2} # 這個應該要放到setup裡&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">functools&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8aadf4;font-weight:bold">@functools.lru_cache&lt;/span>(maxsize&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">None&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">cs3&lt;/span>(n):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> n &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span> n &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> n
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> cs3(n&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> cs3(n&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(timeit&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timeit(&lt;span style="color:#a6da95">&amp;#39;print(cs1(35))&amp;#39;&lt;/span>, &lt;span style="color:#91d7e3">globals&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#91d7e3">globals&lt;/span>(), number&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(timeit&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timeit(&lt;span style="color:#a6da95">&amp;#39;print(cs2(35, dic))&amp;#39;&lt;/span>, setup&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;dic = {1 : 1, 2 : 2}&amp;#39;&lt;/span>, &lt;span style="color:#91d7e3">globals&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#91d7e3">globals&lt;/span>(), number&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(timeit&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timeit(&lt;span style="color:#a6da95">&amp;#39;print(cs3(35))&amp;#39;&lt;/span>, setup&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;import functools&amp;#39;&lt;/span>, &lt;span style="color:#91d7e3">globals&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#91d7e3">globals&lt;/span>(), number&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來我們來講基本的影像處理。&lt;br>
PIL(Python Imaging Library)是一套影像處理的模組，&lt;br>
可以做到一些常見的影像處理和操作，&lt;br>
比如裁切、平移、旋轉、縮放，&lt;br>
調整亮度、色調，套用濾鏡等等，&lt;br>
雖然是沒有專業的Photoshop(免費的有GIMP)等軟體厲害，&lt;br>
但勝在可以在Python中用程式的方式來處理。&lt;br>
但原本的PIL早在Python 2.7後就斷更了，&lt;br>
但後來有一群好心人在這個基礎上開了一個新的版本，&lt;br>
並命名為Pillow，除了支援Python 3.x的版本外，&lt;br>
也加入了一些特性，所以我們這裡只需要安裝Pillow就行啦！&lt;br>
由於不是內建函式庫，請利用安裝Python時，&lt;br>
所附帶pip套件管理程式來安裝Pillow：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>pip install Pillow
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我們下面使用從pixabay取得的&lt;a class="link" href="https://pixabay.com/photos/flower-wooden-vase-shadow-table-2585803/" target="_blank" rel="noopener"
>免費圖片&lt;/a>，&lt;br>
進行接下來的操作(請下載後將圖片放置執行程式的位置)：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">PIL&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> Image
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Image&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>open(&lt;span style="color:#a6da95">&amp;#39;flower.jpg&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 讀檔&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>format, img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>size, img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>mode &lt;span style="color:#6e738d;font-style:italic"># 圖片格式，寬高，RGB彩色&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>(&lt;span style="color:#a6da95">&amp;#39;JPEG&amp;#39;&lt;/span>, (&lt;span style="color:#f5a97f">1920&lt;/span>, &lt;span style="color:#f5a97f">1280&lt;/span>), &lt;span style="color:#a6da95">&amp;#39;RGB&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show() &lt;span style="color:#6e738d;font-style:italic"># 會將圖片顯示在螢幕上&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-21-image-processing-with-pillow/image-001.jpg"
width="800"
height="534"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-21-image-processing-with-pillow/image-001_hudbf0a48160e1763eee3aafad31fe165d_39904_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-21-image-processing-with-pillow/image-001_hudbf0a48160e1763eee3aafad31fe165d_39904_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="149"
data-flex-basis="359px"
>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img_rotate &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>rotate(&lt;span style="color:#f5a97f">180&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 將圖片順時針轉180度&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img_rotate&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show() &lt;span style="color:#6e738d;font-style:italic"># 再顯示，應該會看到倒過來的花瓶&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 要裁切請用crop, 並且必須傳入Tuple，4個數分別代表左上(x1, y1)/右下(x2, y2)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 在一般程式的圖形處理中，原點(0, 0)在左上角&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 往右代表x增加，往下代表y增加，留意和一般座標的定法不同！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img_crop &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> img_rotate&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>crop((&lt;span style="color:#f5a97f">960&lt;/span>, &lt;span style="color:#f5a97f">50&lt;/span>, &lt;span style="color:#f5a97f">1920&lt;/span>, &lt;span style="color:#f5a97f">1080&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img_crop&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show() &lt;span style="color:#6e738d;font-style:italic"># 將旁邊的空白修掉了一點，再來看看結果&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 按照決定的寬高來縮放調整圖片大小，同樣需要以Tuple表示&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img_resize &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> img_crop&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>resize((&lt;span style="color:#f5a97f">240&lt;/span>, &lt;span style="color:#f5a97f">250&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img_crop&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>save(&lt;span style="color:#a6da95">&amp;#39;crop.jpg&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img_res &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> img_resize&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>rotate(&lt;span style="color:#f5a97f">180&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 再轉過來&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img_res&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>save(&lt;span style="color:#a6da95">&amp;#39;res.bmp&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 存到檔案，格式依照副檔名決定。&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 將img_res的內容貼到img_rotate上，並合成一張(當然還是要save過後才能看到改變)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img_rotate&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>paste(img_res, (&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img_rotate&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img_rotate&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>save(&lt;span style="color:#a6da95">&amp;#39;combination.png&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>最後的結果應該如下：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-21-image-processing-with-pillow/image-002.png"
width="561"
height="172"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-21-image-processing-with-pillow/image-002_hu6bb1341853d0c184a611f6e493b502fe_61716_480x0_resize_box_3.png 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-21-image-processing-with-pillow/image-002_hu6bb1341853d0c184a611f6e493b502fe_61716_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="326"
data-flex-basis="782px"
>&lt;/p>
&lt;p>上面我們簡單的使用了幾個屬性和方法：&lt;br>
format/size/mode(顯示格式/大小/色彩模式)&lt;br>
show/rotate/crop/paste/save(顯示圖片/旋轉/裁切/貼上/存檔)&lt;br>
其他還有像是filter(濾鏡，在ImageFilter模組裡)可以作一些基本的特效，&lt;br>
讀者有興趣可以再查找相關的方法嘗試。&lt;/p>
&lt;p>接下來，我們再來看看其他有趣的功能。&lt;br>
假設今天我們想要製作簡單的長輩圖，&lt;br>
(以原來的flower.jpg為例，其寬高為1920及1280)&lt;br>
那我們需要Pillow裡面關於繪圖的模組來進行操作，&lt;br>
該模組名為ImageDraw，&lt;br>
可以用來處理繪製各種常見圖形，以及文字的方法。&lt;br>
同時，由於一般的文字字型會有不能處理中文的問題，&lt;br>
我們這邊會直接引入truetype的中文字型，&lt;br>
讀者可以從C:\Windows\Fonts選擇一個喜歡的字型，&lt;br>
並將其複製到你所使用的資料夾以利操作。&lt;br>
我們下面會以複製”微軟正黑體”為例，&lt;br>
複製到資料夾後會看到三個變形的字體，&lt;br>
分別是msjh.ttc, msjhl.ttc, msjhbd.ttc，&lt;br>
我們接下來選擇當中的msjhbd.ttc(粗體字型)進行操作。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">23
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">24
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">25
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">26
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">27
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">28
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">29
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">30
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">31
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">32
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">33
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">34
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">35
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">PIL&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> Image, ImageDraw, ImageFont
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 如果要用空白畫布來繪製，可以用Image.new(&amp;#34;RGB&amp;#34;, (400,300))的形式建立。&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Image&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>open(&lt;span style="color:#a6da95">&amp;#39;flower.jpg&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># copy可以用來複製一個Image物件，先備份一下，不行就拿它來蓋掉img&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> backup_img &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>copy()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> backup_img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 建立一個Draw物件，接下來draw所有的操作都會影響到img上面。&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> draw &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> ImageDraw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Draw(img)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> font &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> ImageFont&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>truetype(&lt;span style="color:#a6da95">&amp;#39;./msjhbd.ttc&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">100&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 給定字型及大小&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> text &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;霹靂卡霹靂拉拉 波波力那貝貝魯多&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> draw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>text( (&lt;span style="color:#f5a97f">960&lt;/span>, &lt;span style="color:#f5a97f">320&lt;/span>), text, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>font) &lt;span style="color:#6e738d;font-style:italic"># 好像太大了?&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> font &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> ImageFont&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>truetype(&lt;span style="color:#a6da95">&amp;#39;./msjhbd.ttc&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">50&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 改一下大小&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> draw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>text( (&lt;span style="color:#f5a97f">960&lt;/span>, &lt;span style="color:#f5a97f">320&lt;/span>), text, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>font) &lt;span style="color:#6e738d;font-style:italic"># 再畫一次(應該會重複)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> backup_img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>copy() &lt;span style="color:#6e738d;font-style:italic"># 洗掉吧！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> draw &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> ImageDraw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Draw(img) &lt;span style="color:#6e738d;font-style:italic"># 蓋回來會影響到draw跟img的連結，所以要重置&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> draw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>ink &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">0xff0000&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 我們可以更改要使用的顏色(0x代表16進位)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> draw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>text( (&lt;span style="color:#f5a97f">960&lt;/span>, &lt;span style="color:#f5a97f">320&lt;/span>), text, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>font)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show() &lt;span style="color:#6e738d;font-style:italic"># 看起來應該是藍色&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 也可以使用fill參數代入，順序是RGBA，也就是紅、綠、藍、透明度(alpha)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> draw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>text( (&lt;span style="color:#f5a97f">1060&lt;/span>, &lt;span style="color:#f5a97f">960&lt;/span>), &lt;span style="color:#a6da95">&amp;#39;認同請分享&amp;#39;&lt;/span>, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>font, fill&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#f5a97f">255&lt;/span>,&lt;span style="color:#f5a97f">0&lt;/span>,&lt;span style="color:#f5a97f">0&lt;/span>,&lt;span style="color:#f5a97f">128&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 正式來囉！關於顏色的選擇可以使用如htmlcolorcodes等網站來取得色碼&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> backup_img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>copy()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> draw &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> ImageDraw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>Draw(img)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> font &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> ImageFont&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>truetype(&lt;span style="color:#a6da95">&amp;#39;./msjhbd.ttc&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">60&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> draw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>ink&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">0xF39C12&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># draw.text()可以多行&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> text &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;請常唸&lt;/span>&lt;span style="color:#8aadf4">\n\n&lt;/span>&lt;span style="color:#a6da95">　　霹靂卡霹靂拉拉&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">　　波波力那貝貝魯多&lt;/span>&lt;span style="color:#8aadf4">\n\n&lt;/span>&lt;span style="color:#a6da95">唸時&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">須心無雜念 專注 便可心想事成&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> draw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>text( (&lt;span style="color:#f5a97f">1000&lt;/span>, &lt;span style="color:#f5a97f">300&lt;/span>), text, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>font)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> font &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> ImageFont&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>truetype(&lt;span style="color:#a6da95">&amp;#39;./msjhbd.ttc&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">70&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> draw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>text( (&lt;span style="color:#f5a97f">1520&lt;/span>, &lt;span style="color:#f5a97f">960&lt;/span>), &lt;span style="color:#a6da95">&amp;#39;認同請分享&amp;#39;&lt;/span>, font&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>font, fill&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>(&lt;span style="color:#f5a97f">165&lt;/span>, &lt;span style="color:#f5a97f">105&lt;/span>, &lt;span style="color:#f5a97f">189&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>show()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> img&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>save(&lt;span style="color:#a6da95">&amp;#39;elder.jpg&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 送給長輩吧XD！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>結果應該會像這樣：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-21-image-processing-with-pillow/image-003.jpg"
width="800"
height="534"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-21-image-processing-with-pillow/image-003_hu6866e19200efa1e6f7b3149247b4a4fe_50788_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-21-image-processing-with-pillow/image-003_hu6866e19200efa1e6f7b3149247b4a4fe_50788_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="149"
data-flex-basis="359px"
>&lt;/p>
&lt;p>除了文字以外，當然也可以畫一些像是點、線、矩形、橢圓等幾何圖形，&lt;br>
讀者可以再參照Pillow的ImageDraw模組的&lt;a class="link" href="https://pillow.readthedocs.io/en/stable/reference/ImageDraw.html" target="_blank" rel="noopener"
>說明文件&lt;/a>。&lt;/p>
&lt;p>今天的練習的部分，&lt;br>
請嘗試運用今天提到的部分，&lt;br>
幫筆者設計一個宣傳長輩圖XD!&lt;br>
例如：&lt;br>
「請常唸&lt;br>
從LeetCode學演算法 基礎打底 進階扎實 面試通靈&lt;br>
選購全套享優惠 居家旅行 通過面試 必備良藥&lt;br>
 認同請分享」&lt;br>
歡迎貼到留言區讓大家看看你的設計XD!&lt;/p>
&lt;p>那麼，我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (20) — 時間量測與效率檢驗：你的時間也不是你的時間</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-20-time-measurements-and-efficiency-examinations/</link><pubDate>Mon, 05 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-20-time-measurements-and-efficiency-examinations/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (20) — 時間量測與效率檢驗：你的時間也不是你的時間" />&lt;h2 id="day-20-時間量測與效率檢驗你的時間也不是你的時間">Day 20 時間量測與效率檢驗：你的時間也不是你的時間
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10247284" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10247284&lt;/a>&lt;/p>
&lt;h3 id="我們先來解一下昨天的練習吧">我們先來解一下昨天的練習吧！
&lt;/h3>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">datetime&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> date, datetime, time ,timedelta
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> now &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> date(&lt;span style="color:#f5a97f">2020&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> mem &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [date(&lt;span style="color:#f5a97f">2021&lt;/span>,&lt;span style="color:#f5a97f">8&lt;/span>,&lt;span style="color:#f5a97f">14&lt;/span>), date(&lt;span style="color:#f5a97f">2021&lt;/span>,&lt;span style="color:#f5a97f">2&lt;/span>,&lt;span style="color:#f5a97f">14&lt;/span>), date(&lt;span style="color:#f5a97f">2021&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">14&lt;/span>), date(&lt;span style="color:#f5a97f">2020&lt;/span>,&lt;span style="color:#f5a97f">10&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>), d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ate(&lt;span style="color:#f5a97f">2021&lt;/span>,&lt;span style="color:#f5a97f">11&lt;/span>,&lt;span style="color:#f5a97f">3&lt;/span>)]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diff &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">sorted&lt;/span>([d &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> now &lt;span style="color:#c6a0f6">for&lt;/span> d &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> mem]) &lt;span style="color:#6e738d;font-style:italic"># 你沒看錯，是可以排序的~&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diff
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timedelta(days&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>), datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timedelta(days&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">136&lt;/span>), datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timedelta(da
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ys&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">164&lt;/span>), datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timedelta(days&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">317&lt;/span>), datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timedelta(days&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">398&lt;/span>)]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">for&lt;/span> d &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> diff:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#91d7e3">str&lt;/span>(d)) &lt;span style="color:#6e738d;font-style:italic"># 這樣顯示也可以啦！但好像可以簡單一點XD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">2&lt;/span> days, &lt;span style="color:#f5a97f">0&lt;/span>:&lt;span style="color:#f5a97f">00&lt;/span>:&lt;span style="color:#f5a97f">00&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">136&lt;/span> days, &lt;span style="color:#f5a97f">0&lt;/span>:&lt;span style="color:#f5a97f">00&lt;/span>:&lt;span style="color:#f5a97f">00&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">164&lt;/span> days, &lt;span style="color:#f5a97f">0&lt;/span>:&lt;span style="color:#f5a97f">00&lt;/span>:&lt;span style="color:#f5a97f">00&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">317&lt;/span> days, &lt;span style="color:#f5a97f">0&lt;/span>:&lt;span style="color:#f5a97f">00&lt;/span>:&lt;span style="color:#f5a97f">00&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">398&lt;/span> days, &lt;span style="color:#f5a97f">0&lt;/span>:&lt;span style="color:#f5a97f">00&lt;/span>:&lt;span style="color:#f5a97f">00&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> days &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [d&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>days &lt;span style="color:#c6a0f6">for&lt;/span> d &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> diff] &lt;span style="color:#6e738d;font-style:italic"># deltatime也可以單取其中的單位&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> days
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">136&lt;/span>, &lt;span style="color:#f5a97f">164&lt;/span>, &lt;span style="color:#f5a97f">317&lt;/span>, &lt;span style="color:#f5a97f">398&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>糟糕，這篇文貼出來的時間點第一個重要日子已經過了，&lt;br>
只好希望小亦有記得阿啾的生日了XD&lt;/p>
&lt;p>上一篇我們提到了可以利用time.time()來計算，&lt;br>
但如果要取平均的話，可能要自己寫迴圏來處理，&lt;br>
但寫迴圏這件事情從根本上就有些破壞原本的結構，&lt;br>
那麼該怎麼作比較好呢？&lt;br>
我們可以利用timeit這個模組。&lt;br>
當我們想簡單計算某個指令的耗時的時候，&lt;br>
我們可以先用直接在命令提示字元裡下指令的方法，&lt;br>
比方說：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve\utils&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>m timeit &lt;span style="color:#a6da95">&amp;#34;&amp;#39;-&amp;#39;.join(str(n) for n in range(100))&amp;#34;&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 今晚，我想來點字串組合套餐&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">10000&lt;/span> loops, best of &lt;span style="color:#f5a97f">5&lt;/span>: &lt;span style="color:#f5a97f">23&lt;/span> usec per loop
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>“python -m” 可以讓我們得以呼叫一些標準函式庫的方法並輸入一些參數，&lt;br>
以本例來說，就是呼叫timeit，&lt;br>
然後要求它測試將0~99轉成字串並用”-”連接起來的耗時。&lt;br>
我們可以看到在沒有預設的狀況下，它跑了10000次，&lt;br>
並且取到最快的5次平均，結果平均速度是23微秒。&lt;br>
這個相當於我們在直譯器或.py檔中使用timeit.timeit()，&lt;br>
其方法為：&lt;br>
&lt;strong>timeit.timeit(stmt, setup, timer, number)&lt;/strong> ，&lt;br>
stmt: 被量測的程式碼&lt;br>
setup: 開始前可能有一些前置的設定要做的話就放在這裡&lt;br>
timer: 請忽視，這是預設的timer&lt;br>
number: stmt執行的次數&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">timeit&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> timeit&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timeit(&lt;span style="color:#a6da95">&amp;#34;&amp;#39;-&amp;#39;.join(str(n) for n in range(100))&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 然後你就會發現卡住了，因為在這裡預設的次數是1000000次(一百萬次)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 連續按Ctrl+C以中斷上面的執行&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> timeit&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timeit(&lt;span style="color:#a6da95">&amp;#34;&amp;#39;-&amp;#39;.join(str(n) for n in range(100))&amp;#34;&lt;/span>, number&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10000&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">0.24359135900000695&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 需要多行的話，請使用分號分隔不同行&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> timeit&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timeit(stmt&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;x=3;y=5;res=x*y&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">0.04275195899998607&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果想要重複timeit的測量，可以使用timeit.repeat()：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 相當於做timeit.timeit() 7遍&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> timeit&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>repeat(stmt&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;x=3;y=5;res=x*y&amp;#39;&lt;/span>, number&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10000&lt;/span>, repeat&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">7&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">0.0004259219999767083&lt;/span>, &lt;span style="color:#f5a97f">0.0004217530000687475&lt;/span>, &lt;span style="color:#f5a97f">0.0004227150000133406&lt;/span>, &lt;span style="color:#f5a97f">0.00042143&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">199993915914&lt;/span>, &lt;span style="color:#f5a97f">0.00043714699995689443&lt;/span>, &lt;span style="color:#f5a97f">0.0004217530000687475&lt;/span>, &lt;span style="color:#f5a97f">0.00044612800002141&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">74&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果是要測試一整個函式，我們是可以將整段都塞進字串裡沒錯，&lt;br>
但看起來太醜了XD!&lt;br>
那麼，怎麼樣在不動到原有的程式碼的狀況下新增進行測試呢？&lt;/p>
&lt;p>我們可以使用類似如下的方式：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">timeit&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">f&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">os&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> path, dirs, files &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>walk(&lt;span style="color:#a6da95">&amp;#39;.&amp;#39;&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(path)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> f &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> files:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>join(path, f))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> d &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> dirs:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>join(path, d))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 下面這三行的做的事情是一樣的&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(timeit&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timeit(f, number&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">5&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># print(timeit.timeit(&amp;#39;f()&amp;#39;, setup=&amp;#39;from __main__ import f&amp;#39;, number=5))&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># print(timeit.timeit(&amp;#39;f()&amp;#39;, globals=globals(), number=5))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>其結果如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve\utils&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\bookstore&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\check&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\poem&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>txt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\schedule&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\&lt;span style="color:#8aadf4">__init__&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv\student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv\student_dic&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\json\classA&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__\check&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__\schedule&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__\&lt;span style="color:#8aadf4">__init__&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>(會再重複4次)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">0.008256415&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>stmt也可以直接傳入函數名稱，這時候後面就不用加括號了，&lt;br>
因為是當成一個函數物件；&lt;br>
如果當成一個字串來傳進去的話，&lt;br>
就必須要在setup的時後告訴它&lt;strong>主程式&lt;/strong> 有這個東西，&lt;br>
這樣Python才認得到呦！&lt;br>
(也就是__main__)&lt;br>
或者，也可以使用globals=globals()，&lt;br>
直接將所有的程式碼當成全域來用，也可以達到相同的效果。&lt;/p>
&lt;p>昨天到今天這兩篇，應該可以幫助讀者對於時間相關的方法有初步的認識。&lt;br>
事實上要再深究的話，執行時間還會受到一些額外的影響，&lt;br>
比如Python的gc(資源回收處理)，執行程式時電腦其他程式占用CPU資源的影響等，&lt;br>
但這比較深入一些，我們就不在這裡細究了XD！&lt;br>
(註：timeit預設會把gc關掉，如果要測打開的狀況，&lt;br>
可以在setup放入’gc.enable()’。)&lt;/p>
&lt;h3 id="最後我們也來做個練習吧">最後我們也來做個練習吧！
&lt;/h3>&lt;p>還記得先前我們講遞迴嗎(第九篇)？&lt;br>
我們後面有做過練習，在&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10242602" target="_blank" rel="noopener"
>第十篇&lt;/a>有解答。&lt;br>
我們比較過沒有做好的遞迴的一個解答，&lt;br>
跟有記錄前面答案的遞迴，且提供了二個解答；&lt;br>
請比較這三種在做&lt;strong>n=35&lt;/strong> 的時候的計算時速度的差異。&lt;br>
(注意：只做&lt;strong>n=35&lt;/strong> 即可，不用算1~35，此外number取&lt;strong>10次&lt;/strong> 就好。)&lt;/p>
&lt;p>那麼，我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (19) — 日期與時間：你知不知道，我等到花兒也謝了</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-19-date-and-time/</link><pubDate>Sun, 04 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-19-date-and-time/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (19) — 日期與時間：你知不知道，我等到花兒也謝了" />&lt;h2 id="day-19-日期與時間你知不知道我等到花兒也謝了">Day 19 日期與時間：你知不知道，我等到花兒也謝了
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10247281" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10247281&lt;/a>&lt;/p>
&lt;p>接下來我們要聊到日期與時間的處理相關模組：&lt;br>
datetime跟time。&lt;br>
請想像一下，在人生當中，是不是常常有要算日子和時間的時候？&lt;br>
不論是算退伍還有多少天；&lt;br>
算紀念日520天是什麼時候；&lt;br>
算紀念日1000天是什麼時候；&lt;br>
算紀念日2000天是什麼時候……XD&lt;br>
我們可以利用Python的datetime模組來幫忙計算時間日期與時間差，&lt;br>
這樣子就不會在被問今天是什麼日子的時候答不出來了(吧)！&lt;/p>
&lt;p>&lt;strong>datetime&lt;/strong> 當中就有&lt;strong>date物件&lt;/strong> 和&lt;strong>time物件&lt;/strong> ，&lt;br>
接下來的示範還是屬於datetime模組的範疇，&lt;br>
請大家不要跟後面的&lt;strong>time模組&lt;/strong> 搞混歐！&lt;br>
我們先來看看操作日期的&lt;strong>date&lt;/strong> 物件的用法：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">datetime&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> date
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> doubleten &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> date(&lt;span style="color:#f5a97f">2020&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 順序是年/月/日&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> doubleten&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>year, doubleten&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>month, doubleten&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>day
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>(&lt;span style="color:#f5a97f">2020&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 用isoformat()和str()都可以轉成用&amp;#34;-&amp;#34;連接的字串&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> doubleten&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>isoformat(), &lt;span style="color:#91d7e3">str&lt;/span>(doubleten)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>(&lt;span style="color:#a6da95">&amp;#39;2020-10-10&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;2020-10-10&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> today &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> date&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>today() &lt;span style="color:#6e738d;font-style:italic"># today()會取到今天&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(today) &lt;span style="color:#6e738d;font-style:italic"># isoformat格式會補0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;2020-10-01&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 2020-10-01是星期四，weekday的記法是0(星期一)~6(星期日)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># isoweekday的記法則是1(星期一)~7(星期日)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> today&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>weekday(), today&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>isoweekday()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>(&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># strftime可用來格式化想要的顯示樣態和目標&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> doubleten&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>strftime(&lt;span style="color:#a6da95">&amp;#39;%Y--%m--&lt;/span>&lt;span style="color:#a6da95">%d&lt;/span>&lt;span style="color:#a6da95">, WeekDay: &lt;/span>&lt;span style="color:#a6da95">%a&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;2020--10--10, WeekDay: Sat&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>關於strftime以及後面常見的格式，&lt;br>
大體上會跟一般通用的表示法相同，&lt;br>
例如%Y代表年，%m代表月，%d代表日，%a則代表星期幾的縮寫；&lt;br>
其他還有%H(小時)、%M(分)、%S(秒)等等，&lt;br>
可以參考&lt;a class="link" href="https://docs.python.org/zh-tw/3/library/datetime.html#strftime-and-strptime-format-codes" target="_blank" rel="noopener"
>strftime() 和 strptime() Format Codes&lt;/a>。&lt;/p>
&lt;p>datetime中的time物件操作方式也很類似：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">datetime&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> time
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> time() &lt;span style="color:#6e738d;font-style:italic"># datetime的time.time()預設是從0開始&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>time(&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> now &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> time()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> now&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>isoformat()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;00:00:00&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> now &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> time(&lt;span style="color:#f5a97f">0&lt;/span>,&lt;span style="color:#f5a97f">0&lt;/span>,&lt;span style="color:#f5a97f">0&lt;/span>,&lt;span style="color:#f5a97f">38&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 最小單位到微秒(百萬分之一秒，也就是10e-6)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> now&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>microsecond &lt;span style="color:#6e738d;font-style:italic"># 取微秒&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">38&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> now &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> time(hour&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">19&lt;/span>, second&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">50&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(now)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;19:00:50&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> now&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>strftime(&lt;span style="color:#a6da95">&amp;#39;%H-%M&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 同樣可以適用strftime&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;19-00&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>或者，兩者都要的話，&lt;br>
可以直接使用datetime.datetime物件！&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">datetime&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> datetime
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>today() &lt;span style="color:#6e738d;font-style:italic"># 現在的時間，計到微秒&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>datetime(&lt;span style="color:#f5a97f">2020&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">17&lt;/span>, &lt;span style="color:#f5a97f">37&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">490703&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>utcnow() &lt;span style="color:#6e738d;font-style:italic"># UTC標準時間(所以台灣是+8，看出來了嗎？)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>datetime(&lt;span style="color:#f5a97f">2020&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">37&lt;/span>, &lt;span style="color:#f5a97f">43&lt;/span>, &lt;span style="color:#f5a97f">823644&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># str這邊和isoformat就會有點不一樣了，isoformat會用&amp;#34;T&amp;#34;來分隔。&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>now())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;2020-10-01 17:39:03.953659&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>now()&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>isoformat()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;2020-10-01T17:39:23.671787&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>讀者可能會問：&lt;br>
「不對阿，說好的算紀念日呢？」&lt;br>
要計算日期差距相關的處理，&lt;br>
我們要用到datetime的另一個物件：&lt;br>
&lt;strong>timedelta&lt;/strong> 。&lt;br>
timedelta的建立很簡單，就是timedelta(時間差)。&lt;br>
下面我們假設&lt;strong>小亦向阿啾在今年的情人節2/14告白並成功了&lt;/strong> ，&lt;br>
接下來我們先來算一下到&lt;strong>現在(10/1)為止&lt;/strong> ，&lt;br>
他們已經經過了幾天，到後面的紀念日又還有多久呢？&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">datetime&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> date, datetime, time ,timedelta
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> valentine &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> date(&lt;span style="color:#f5a97f">2020&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">14&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> today &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> date&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>today()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> romanticlen &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> today &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> valentine &lt;span style="color:#6e738d;font-style:italic"># date相減會變成timedelta&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 算一算交往時間吧！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> romanticlen
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timedelta(days&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">230&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 小亦要記得的幾個紀念日&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> remember &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#f5a97f">100&lt;/span>, &lt;span style="color:#f5a97f">200&lt;/span>, &lt;span style="color:#f5a97f">520&lt;/span>, &lt;span style="color:#f5a97f">1000&lt;/span>, &lt;span style="color:#f5a97f">2000&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 注意timedelta也可以用乘上數字來和定點日期相加減計算，相當有彈性&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> memorialday &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [valentine &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> timedelta(days&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>i) &lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> remember]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> memorialday &lt;span style="color:#6e738d;font-style:italic"># 咦？這時間怎麼好像有的已經過了？&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>date(&lt;span style="color:#f5a97f">2020&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">24&lt;/span>), datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>date(&lt;span style="color:#f5a97f">2020&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>), datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>date(&lt;span style="color:#f5a97f">2021&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">8&lt;/span>), datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>date(&lt;span style="color:#f5a97f">2022&lt;/span>, &lt;span style="color:#f5a97f">11&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>), datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>date(&lt;span style="color:#f5a97f">2025&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">6&lt;/span>)]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diff &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [i &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> today &lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> memorialday] &lt;span style="color:#6e738d;font-style:italic"># 來減看看！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diff &lt;span style="color:#6e738d;font-style:italic"># 小亦你很糟糕歐，有兩個紀念日已經過了！阿啾會哭哭呦XD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timedelta(days&lt;span style="color:#91d7e3;font-weight:bold">=-&lt;/span>&lt;span style="color:#f5a97f">130&lt;/span>), datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timedelta(days&lt;span style="color:#91d7e3;font-weight:bold">=-&lt;/span>&lt;span style="color:#f5a97f">30&lt;/span>), datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timedelta
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>(days&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">290&lt;/span>), datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timedelta(days&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">770&lt;/span>), datetime&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>timedelta(days&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">1770&lt;/span>)]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>講完了datetime，我們現在來講&lt;strong>time&lt;/strong> 模組。&lt;br>
time模組比較簡單一點點，基本上最常用到的就是time.time()。&lt;br>
&lt;strong>time.time()會給出Unix標準時間&lt;/strong> ，&lt;br>
也就是以1970年1月1號起算到目前為止帶小數點的總秒數(不用背，不會考XD)。&lt;br>
如果使用localtime()的話，則會換算成現在所在時區的時間。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">time&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> time&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>time()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1601547391.7189288&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> time&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>localtime() &lt;span style="color:#6e738d;font-style:italic"># 筆者電腦目前是2020年10月1日下午6點16分&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>time&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>struct_time(tm_year&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">2020&lt;/span>, tm_mon&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>, tm_mday&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, tm_hour&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">18&lt;/span>, tm_min&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">16&lt;/span>, tm_s
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ec&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">34&lt;/span>, tm_wday&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">3&lt;/span>, tm_yday&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">275&lt;/span>, tm_isdst&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">0&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>上面範例中的struct_time是time的另一個物件，&lt;br>
作用是可以用來給定一個指定的時間方便處理。&lt;br>
我們也可以使用time.ctime()或time.strftime(格式化字串, 時間)，&lt;br>
將其轉換成易讀的字串。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> now &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> time&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>localtime()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> time&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>ctime()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;Thu Oct 1 18:22:46 2020&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> time&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>strftime(&lt;span style="color:#a6da95">&amp;#39;現在是%A, %Y年%m月&lt;/span>&lt;span style="color:#a6da95">%d&lt;/span>&lt;span style="color:#a6da95">日的%H時%M分%S秒&amp;#39;&lt;/span>, now)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;現在是Thursday, 2020年10月01日的18時22分35秒&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>不同的國家語系，給出來的縮寫等會不同，&lt;br>
如果要再精細轉換的話，可以使用local進行setlocale()的操作，&lt;br>
有興趣的話，可以再進一步研究一下用法。&lt;/p>
&lt;p>但最常被簡單用到的方式&lt;strong>還是time.time()跟time.sleep()了&lt;/strong> !&lt;br>
通常狀況下，我們會在跑完一段想測量的程式以後，&lt;br>
使用&lt;strong>time.time()的差值&lt;/strong> 來計算時間。&lt;br>
&lt;strong>time.sleep()則可以讓程式暫時停止執行指定的秒數&lt;/strong> ，&lt;br>
待時間到才繼續運作。&lt;br>
我們拿前面的os的程式來修改一下測試這兩個方法，&lt;br>
會發現多次測試下，扣掉10秒以後，(因為10秒是我們睡掉的XD)&lt;br>
耗時其實差距蠻大的。&lt;br>
要取得一個比較良好的數據，&lt;br>
就可能要用迴圏來多測幾次，再取平均值。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">os&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">,&lt;/span> &lt;span style="color:#f5a97f">time&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>start &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> time&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>time()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">for&lt;/span> path, dirs, files &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>walk(&lt;span style="color:#a6da95">&amp;#39;.&amp;#39;&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(path)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> f &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> files:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>join(path, f))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> d &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> dirs:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>join(path, d))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>time&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>sleep(&lt;span style="color:#f5a97f">10&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 睡10秒鐘(可以給小數)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>end &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> time&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>time()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#34;總耗時：&lt;/span>&lt;span style="color:#a6da95">%f&lt;/span>&lt;span style="color:#a6da95">&amp;#34;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> (end &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> start))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve\utils&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\bookstore&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\check&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\poem&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>txt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\schedule&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\&lt;span style="color:#8aadf4">__init__&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv\student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv\student_dic&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\json\classA&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__\check&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__\schedule&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__\&lt;span style="color:#8aadf4">__init__&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>總耗時&lt;span style="color:#ed8796">：&lt;/span>&lt;span style="color:#f5a97f">10.003572&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve\utils&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\bookstore&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\check&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\poem&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>txt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\schedule&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\&lt;span style="color:#8aadf4">__init__&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv\student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv\student_dic&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\json\classA&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__\check&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__\schedule&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__\&lt;span style="color:#8aadf4">__init__&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>總耗時&lt;span style="color:#ed8796">：&lt;/span>&lt;span style="color:#f5a97f">10.002572&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="最後我們來做個練習吧">最後我們來做個練習吧！
&lt;/h3>&lt;ol>
&lt;li>承前面小亦和阿啾的狀況需要補救，&lt;br>
請幫其重新列出接下來到明年(2021)幾個重要的節日的時間，&lt;br>
計算距離2020–10–01的天數，並排序將其&lt;strong>從近排到遠&lt;/strong> ，&lt;br>
這樣小亦才不會漏掉。(1000天或2000天什麼的先不用算)&lt;br>
[七夕(2021–08–14)、情人節(2021–02–14)、白色情人節(2021–03–14)、阿啾生日(2020–10–03)、阿啾生日(2021–10–03)]&lt;br>
(什麼？你說為什麼有兩個生日？生日當然要每個生日都要過阿，&lt;br>
會問這個問題的讀者請檢討一下自己是不是憑實力單身阿XD?)&lt;/li>
&lt;/ol>
&lt;p>那麼，我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (18) — 系統模組：走路的不是強尼，是你心中的OS</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-18-system-modules/</link><pubDate>Sat, 03 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-18-system-modules/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (18) — 系統模組：走路的不是強尼，是你心中的OS" />&lt;h2 id="day-18-系統模組走路的不是強尼是你心中的os">Day 18 系統模組：走路的不是強尼，是你心中的OS
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10246454" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10246454&lt;/a>&lt;/p>
&lt;h3 id="我們先來看看昨天的練習吧">我們先來看看昨天的練習吧！
&lt;/h3>&lt;p>一般來說，我們可以先打開來觀察，&lt;br>
將其複製到JSON Online Editor上看看右邊的tree長什麼樣子，&lt;br>
這樣會有助於後面思考操作方式。&lt;/p>
&lt;ol>
&lt;li>請下載下來並放到你自己執行的目錄(筆者命名為bookstore.json)&lt;/li>
&lt;li>用以下的讀取方式，將json檔載入到bs裡：&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">json&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">with&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;bookstore.json&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;r&amp;#39;&lt;/span>, encoding&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#34;utf-8&amp;#34;&lt;/span>) &lt;span style="color:#c6a0f6">as&lt;/span> f:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> bs &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> json&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>load(f)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol>
&lt;li>bs是一個串列(因為在這個json裡面是以array的型式儲存的)&lt;/li>
&lt;li>我們可以用以下的方式(或者你要去用地址找也可以)&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 記得list comprehension嗎?&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>taipei &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [i &lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> bs &lt;span style="color:#c6a0f6">if&lt;/span> &lt;span style="color:#a6da95">&amp;#39;臺北市&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> i[&lt;span style="color:#a6da95">&amp;#39;cityName&amp;#39;&lt;/span>]]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol>
&lt;li>taipei中特色書店點閱數超過2000的店家是哪幾家呢？請列出其名字。&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 我們要的是名字，所以要取&amp;#39;name&amp;#39;，判斷標準則是用hitRate。&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> [i[&lt;span style="color:#a6da95">&amp;#39;name&amp;#39;&lt;/span>] &lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> taipei &lt;span style="color:#c6a0f6">if&lt;/span> i[&lt;span style="color:#a6da95">&amp;#39;hitRate&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">2000&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;茉莉二手書店(臺大店)&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;信誼小太陽親子書房(臺北重慶店)&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;田園城市生活風格書店&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;亞典藝術書店&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;古原軒書店&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>請留意到，這個練習是相對比較輕鬆的，&lt;br>
因為當中所用到的元素都沒有缺漏的部分，&lt;br>
所以不會產生任何錯誤；&lt;br>
但實務狀況上，常常會有一些資料是短少的，&lt;br>
這時候就要先做過資料的前處理(preprocessing)以後，&lt;br>
將缺漏的部分去除，或者補上適當的值，才能讓資料得以正常使用。&lt;br>
在資料清理(data cleaning)這部分，Python常用的有pandas跟numpy，&lt;br>
以後我們有機會再來介紹。&lt;/p>
&lt;p>我們今天要來講的是系統模組(os)。&lt;br>
OS是Operating System(作業系統)的縮寫，&lt;br>
主要作用是提供你所使用的作業系統的一些功能，&lt;br>
例如檔案的路徑檢查、列出檔案列表、&lt;br>
檔案複製/移動/改名/刪除等。&lt;br>
下面的示範，我們是基於使用者在以下的資料夾環境操作的：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve\utils&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>tree &lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span>f
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>列出資料夾 PATH
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>磁碟區序號為 D6BD&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">47&lt;/span>D7
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>C:&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">│&lt;/span> bookstore&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">│&lt;/span> check&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">│&lt;/span> fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">│&lt;/span> poem&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>txt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">│&lt;/span> schedule&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">│&lt;/span> &lt;span style="color:#8aadf4">__init__&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">│&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">├─&lt;/span>csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">│&lt;/span> student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">│&lt;/span> student_dic&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">│&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">├─&lt;/span>json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">│&lt;/span> classA&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">│&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ed8796">└─&lt;/span>__pycache__
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> check&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> schedule&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8aadf4">__init__&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>要使用os，最重要的就是先import啦!&lt;br>
請留意一件事情，&lt;br>
在Unix系列的系統裡面，&lt;strong>路徑分隔資料夾或檔案是使用”/”來處理的&lt;/strong> ，&lt;br>
Windows系列的系統中，&lt;strong>則是使用”\”，兩者剛好相反&lt;/strong> 。&lt;br>
如果我們想看&lt;strong>某個檔案或目錄是否存在於特定位置&lt;/strong> ，&lt;br>
我們可以使用&lt;strong>os.path.exists()&lt;/strong> ，可以是&lt;strong>相對路徑或絕對路徑&lt;/strong> 。&lt;br>
相對路徑是從現在的資料夾為基準出發，來看到到目標位置要怎麼移動；&lt;br>
絕對路徑則是從Unix的根目錄或Windows的C槽D槽之類的起始點出發；&lt;br>
所以以相對路徑來起頭的，&lt;strong>前面會有一個”./”或”.”開頭&lt;/strong> ，&lt;br>
用來表示從現在所在位置起算(一個點代表現在所在位置，兩個點代表上一層)&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">os&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>exists(&lt;span style="color:#a6da95">&amp;#39;check.py&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>exists(&lt;span style="color:#a6da95">&amp;#39;poem.txt&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>exists(&lt;span style="color:#a6da95">&amp;#39;.\json\classA.json&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>exists(&lt;span style="color:#a6da95">&amp;#39;./json/classA.json&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 實際上用linux的寫法給Python去認也行得通，Python會明白含義&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>exists(&lt;span style="color:#a6da95">&amp;#39;./json/classB.json&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 不存在就回傳False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>exists(&lt;span style="color:#a6da95">&amp;#39;C:\Users\Desolve\utils\json\classA.json&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 用絕對路徑時避免不必要的麻煩，請多加一個&amp;#34;\&amp;#34;將可能造成的轉義去除&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;&amp;lt;stdin&amp;gt;&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">SyntaxError&lt;/span>: (unicode error) &lt;span style="color:#a6da95">&amp;#39;unicodeescape&amp;#39;&lt;/span> codec can&lt;span style="color:#a6da95">&amp;#39;t decode bytes in position 2-3: truncated \UXXXXXXXX escape&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>exists(&lt;span style="color:#a6da95">&amp;#39;C:&lt;/span>&lt;span style="color:#8aadf4">\\&lt;/span>&lt;span style="color:#a6da95">Users&lt;/span>&lt;span style="color:#8aadf4">\\&lt;/span>&lt;span style="color:#a6da95">Desolve&lt;/span>&lt;span style="color:#8aadf4">\\&lt;/span>&lt;span style="color:#a6da95">utils&lt;/span>&lt;span style="color:#8aadf4">\\&lt;/span>&lt;span style="color:#a6da95">json&lt;/span>&lt;span style="color:#8aadf4">\\&lt;/span>&lt;span style="color:#a6da95">classA.json&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>再來是分開來的檢查這個路徑是否是檔案/資料夾的方法：&lt;br>
&lt;strong>os.path.isfile()及os.path.isdir()&lt;/strong> 。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>isfile(&lt;span style="color:#a6da95">&amp;#39;./json/classA.json&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 存在，且是檔案&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>isfile(&lt;span style="color:#a6da95">&amp;#39;./json/classB.json&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 不存在則回傳False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>isdir(&lt;span style="color:#a6da95">&amp;#39;./json/classA.json&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 是檔案，不是資料夾&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>isdir(&lt;span style="color:#a6da95">&amp;#39;./json&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 是資料夾&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>那麼如果想要複製或移動檔案呢？這就要用到另一個模組&lt;strong>shutil&lt;/strong> 了：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">shutil&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> shutil&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>copy(&lt;span style="color:#a6da95">&amp;#39;poem.txt&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;poem2.txt&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 前面是來源，後面是目的地&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;poem2.txt&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> shutil&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>move(&lt;span style="color:#a6da95">&amp;#39;poem2.txt&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;poem3.txt&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 移動檔案並更名&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;poem3.txt&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>要修改名字的話，則可以使用&lt;strong>os.rename()&lt;/strong> ：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>rename(&lt;span style="color:#a6da95">&amp;#39;./json/poem3.txt&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;poem3.txt&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 也可以做為移動檔案用&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>要新增/刪除資料夾的話，可以使用&lt;strong>os.mkdir()/os.rmdir()&lt;/strong> ，&lt;br>
刪除檔案則使用&lt;strong>os.remove()&lt;/strong> ：&lt;br>
(有沒有覺得跟Unix系統的shell script很像呢XD?)&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>mkdir(&lt;span style="color:#a6da95">&amp;#39;poems&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 開一個新的資料夾&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>rename(&lt;span style="color:#a6da95">&amp;#39;poem3.txt&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;./poems/poem3.txt&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 將poem3.txt移入&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>rmdir(&lt;span style="color:#a6da95">&amp;#39;poems&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 將poems資料夾刪除...咦?&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;&amp;lt;stdin&amp;gt;&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">OSError&lt;/span>: [WinError &lt;span style="color:#f5a97f">145&lt;/span>] 目錄不是空的&lt;span style="color:#ed8796">。&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;poems&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>remove(&lt;span style="color:#a6da95">&amp;#39;poems/poem3.txt&amp;#39;&lt;/span>)　&lt;span style="color:#6e738d;font-style:italic"># 只能先將檔案移除&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>rmdir(&lt;span style="color:#a6da95">&amp;#39;poems&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 再移除資料夾&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>讀者可能會問：&lt;br>
「我怎麼會知道要先刪除哪些檔案？」&lt;br>
問的好！我們可以&lt;strong>使用os.listdir()先列出資料夾的所有檔案及資料夾&lt;/strong> ：&lt;br>
(注意，只會列出第一層的，再往下的子資料夾就不會展開囉！)&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>listdir()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;bookstore.json&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;check.py&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;csv&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;fromzero.py&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;json&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;poem.txt&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;schedule.py&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;__init__.py&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;__pycache__&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>listdir(&lt;span style="color:#a6da95">&amp;#39;csv&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;student.csv&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;student_dic.csv&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>最後，是我們的終極必殺武器：&lt;strong>os.walk()&lt;/strong> 。&lt;br>
os.walk()就像一個偏執的用路人一樣，&lt;br>
它就是要將整個資料夾，連同子資料夾都走過一遍才會罷休。&lt;br>
走完之後，所有的內容會以(dirpath, dirnames, filenames)的形式回傳，&lt;br>
我們可以使用for … in …的方式取得，&lt;br>
請看範例：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">for&lt;/span> root, dirs, files &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>walk(&lt;span style="color:#a6da95">&amp;#39;.&amp;#39;&lt;/span>):　&lt;span style="color:#6e738d;font-style:italic"># os.walk必須要給一個起始點&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(root)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> f &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> files:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>join(root, f)) &lt;span style="color:#6e738d;font-style:italic"># os.path.join()可用來處理路徑和檔案的結合&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 結果如下&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\bookstore&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\check&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\poem&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>txt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\schedule&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\&lt;span style="color:#8aadf4">__init__&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv\student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\csv\student_dic&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>csv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\json\classA&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__\check&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__\schedule&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>\__pycache__\&lt;span style="color:#8aadf4">__init__&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cpython&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">38.&lt;/span>pyc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果想要刪除掉某個目錄以下的所有檔案及資料夾，&lt;br>
可以參考Python的Document提供的範例：&lt;br>
&lt;strong>請特別留意慎用以下操作，&lt;br>
底下的動作可是真的會將目標資料夾全刪光的！！！&lt;/strong>&lt;br>
尤其是Unix系列的系統，&lt;br>
如果給的top起始點是”/”(根目錄)而非”./”(當前目錄)，&lt;br>
則會將整個檔案系統都砍光光呦！！！&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">for&lt;/span> root, dirs, files &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>walk(top, topdown&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">False&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> name &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> files:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>remove(os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>join(root, name))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> name &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> dirs:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>rmdir(os&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>path&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>join(root, name))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>今天我們介紹了os中跟檔案系統相關操作有關的方法，&lt;br>
其他當然也有很多不錯的相關模組，&lt;br>
例如剛剛有提到的&lt;strong>shutil&lt;/strong> ，或是&lt;strong>pathlib&lt;/strong> ，&lt;br>
有興趣的讀者可再行挖掘。&lt;/p>
&lt;p>那麼，我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/leetcodeadv" target="_blank" rel="noopener"
>https://bit.ly/leetcodeadv&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/leetcodeall" target="_blank" rel="noopener"
>https://bit.ly/leetcodeall&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (17) — 檔案讀寫：妳出現在我詩的每一頁(下)</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-17-file-read-write-3/</link><pubDate>Fri, 02 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-17-file-read-write-3/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (17) — 檔案讀寫：妳出現在我詩的每一頁(下)" />&lt;h2 id="day-17-檔案讀寫妳出現在我詩的每一頁下">Day 17 檔案讀寫：妳出現在我詩的每一頁(下)
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10246077" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10246077&lt;/a>&lt;/p>
&lt;p>上一回我們介紹了CSV的格式以及使用方法，&lt;br>
事實上很多檔案如果是以Excel能表達的狀態下，&lt;br>
CSV應該可以應付絕大多數的需求了！&lt;br>
但對於許多程式開發，或較為複雜的資料，&lt;br>
使用CSV就會稍嫌力有未逮，&lt;br>
因為CSV並不能夠簡單分出比較大量的層級。&lt;/p>
&lt;p>舉例來說，如果我們現在有一組資料，&lt;br>
內含了一個學校的兩個班級，&lt;br>
那可能會長這樣：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>how_school &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;校長&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;How哥&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;工友&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;林阿嘉&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;class&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;A&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;teacher&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;蔡阿嘎&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;students&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;阿明&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;數學&amp;#34;&lt;/span>:&lt;span style="color:#f5a97f">55&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;英文&amp;#34;&lt;/span>:&lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;物理&amp;#34;&lt;/span>:&lt;span style="color:#f5a97f">55&lt;/span>},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;HowHow&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;數學&amp;#34;&lt;/span>:&lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;英文&amp;#34;&lt;/span>:&lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;物理&amp;#34;&lt;/span>:&lt;span style="color:#f5a97f">40&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;B&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;teacher&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;二伯&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;students&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;小美&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;數學&amp;#34;&lt;/span>:&lt;span style="color:#f5a97f">90&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;英文&amp;#34;&lt;/span>:&lt;span style="color:#f5a97f">88&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;物理&amp;#34;&lt;/span>:&lt;span style="color:#f5a97f">100&lt;/span>},
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;蔡哥&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;數學&amp;#34;&lt;/span>:&lt;span style="color:#f5a97f">50&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;英文&amp;#34;&lt;/span>:&lt;span style="color:#f5a97f">50&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;物理&amp;#34;&lt;/span>:&lt;span style="color:#f5a97f">40&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>像這樣子的東西，就很難使用csv簡單表現出來了！&lt;br>
所以我們一般會使用JSON來處理這樣子的結構。&lt;br>
JSON是JavaScript Object Notation的縮寫，&lt;br>
顧名思義，本來是用在JavaScript的格式。&lt;/p>
&lt;p>後來大家發現實在是很好用，&lt;br>
所以也被拿來在很多地方做為資料交換用的格式。&lt;br>
當然，如果要人從頭刻出來，可能中間會有一些沒寫好的地方容易出錯，&lt;br>
這時候我們需要一個用來檢查格式的工具，&lt;br>
讀者可以搜尋 &lt;strong>’JSON online editor’&lt;/strong> ，選擇自己用得順手的來嘗試編寫，&lt;br>
以下我們就拿在 &lt;a class="link" href="https://jsoneditoronline.org/%E3%80%80%E4%B8%8A%E6%93%8D%E4%BD%9C%E5%81%9A%E7%82%BA%E7%AF%84%E4%BE%8B%EF%BC%9A" target="_blank" rel="noopener"
>https://jsoneditoronline.org/&lt;/a> 上操作做為範例：&lt;br>
進入時，幾個簡單的操作就看中間的部分：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-17-file-read-write-3/image-001.png"
width="80"
height="157"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-17-file-read-write-3/image-001_hub4825d31ce2bda0ee4956ee90711eb03_7331_480x0_resize_box_3.png 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-17-file-read-write-3/image-001_hub4825d31ce2bda0ee4956ee90711eb03_7331_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="50"
data-flex-basis="122px"
>&lt;/p>
&lt;p>左邊預設是code(原始的json碼)，右邊預設是tree(JSON Object長的樣子)；&lt;br>
我們可以寫好左邊以後，按一下**”Copy&amp;gt;”** 將其複製到右邊產生tree，&lt;br>
如果失敗的話，這個編輯器就會給你有關哪一行出錯的提示。&lt;br>
(反過來先產生tree再讓它翻成code也可以呦！)&lt;/p>
&lt;p>預設裡應該會給出一段json碼如下，這是用來提示基本關於JSON的用法。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#34;array&amp;#34;&lt;/span>: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">1&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">2&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;boolean&amp;#34;&lt;/span>: true,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;color&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;gold&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;null&amp;#34;&lt;/span>: null,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;number&amp;#34;&lt;/span>: &lt;span style="color:#f5a97f">123&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;object&amp;#34;&lt;/span>: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;a&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;b&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6da95">&amp;#34;c&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;d&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> },
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>首先留意到，每個單位一般都會以一個字串做為它的名字，&lt;br>
和Python不同，字串請全數用**雙引號(“”)**來括住，單引號在這裡是行不通的！&lt;br>
JSON常用的格式有以下幾個：&lt;br>
&lt;strong>array(陣列)&lt;/strong> ：跟Python的串列基本相似，&lt;br>
除了前面有一個它的名字(可自行命名)，&lt;br>
後面使用中括號框住，以**”,”** 逗號分隔。&lt;br>
&lt;strong>boolean(布林值)&lt;/strong> ：可以放在值的地方，使用&lt;strong>true/false&lt;/strong> (注意是全小寫!)。&lt;br>
&lt;strong>color(色彩)&lt;/strong> ：用文字來表示色彩的話，&lt;strong>有些編輯器&lt;/strong> 可以幫你解讀出來XD。&lt;br>
&lt;strong>null(空)&lt;/strong> ：相當於Python的None，表示沒有東西存在。&lt;br>
&lt;strong>number(數字)&lt;/strong> ：在JSON中數字可以是整數或小數。&lt;br>
&lt;strong>object(物件)&lt;/strong> ：使用大括號框起，裡面的每一段跟字典相似，&lt;br>
使用&lt;strong>key:value&lt;/strong> 的型態放入，&lt;br>
可以多層(但是&lt;strong>key必須要是字串&lt;/strong> )。&lt;/p>
&lt;p>那麼，一段Python中的資料結構，要怎麼轉換成JSON呢？&lt;br>
我們可以import json，並使用&lt;strong>dumps()&lt;/strong> 方法來處理：&lt;br>
(如果是從檔案的話要用dump()方法)&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">json&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>how_json &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> json&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>dumps(how_school)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(how_json)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>結果如下……咦？這什麼鬼東西？！&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#34;&lt;/span>&lt;span style="color:#8aadf4">\u6821\u9577&lt;/span>&lt;span style="color:#a6da95">&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;How&lt;/span>&lt;span style="color:#8aadf4">\u54e5&lt;/span>&lt;span style="color:#a6da95">&amp;#34;&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;&lt;/span>&lt;span style="color:#8aadf4">\u5de5\u53cb&lt;/span>&lt;span style="color:#a6da95">&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;&lt;/span>&lt;span style="color:#8aadf4">\u6797\u963f\u5609&lt;/span>&lt;span style="color:#a6da95">&amp;#34;&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;class&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;A&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;teacher&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;&lt;/span>&lt;span style="color:#8aadf4">\u8521\u963f\u560e&lt;/span>&lt;span style="color:#a6da95">&amp;#34;&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;students&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;&lt;/span>&lt;span style="color:#8aadf4">\u963f\u660e&lt;/span>&lt;span style="color:#a6da95">&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;&lt;/span>&lt;span style="color:#8aadf4">\u6578\u5b78&lt;/span>&lt;span style="color:#a6da95">&amp;#34;&lt;/span>: &lt;span style="color:#f5a97f">55&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;&lt;/span>&lt;span style="color:#8aadf4">\u82f1\u6587&lt;/span>&lt;span style="color:#a6da95">&amp;#34;&lt;/span>: &lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;&lt;/span>&lt;span style="color:#8aadf4">\u7269\u7406&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#34;: 55}, &amp;#34;&lt;/span>HowHow&lt;span style="color:#a6da95">&amp;#34;: {&amp;#34;&lt;/span>\u6578\u5b78&lt;span style="color:#a6da95">&amp;#34;: 80, &amp;#34;&lt;/span>\u82f1\u6587&lt;span style="color:#a6da95">&amp;#34;: 60, &amp;#34;&lt;/span>\u7269\u7406&lt;span style="color:#a6da95">&amp;#34;: 40}}}, &amp;#34;&lt;/span>&lt;span style="color:#ed8796">B&lt;/span>&lt;span style="color:#a6da95">&amp;#34;: {&amp;#34;&lt;/span>teacher&lt;span style="color:#a6da95">&amp;#34;: &amp;#34;&lt;/span>\u4e8c\u4f2f&lt;span style="color:#a6da95">&amp;#34;, &amp;#34;&lt;/span>students&lt;span style="color:#a6da95">&amp;#34;: {&amp;#34;&lt;/span>\u5c0f\u7f8e&lt;span style="color:#a6da95">&amp;#34;: {&amp;#34;&lt;/span>\u6578\u5b78&lt;span style="color:#a6da95">&amp;#34;: 90, &amp;#34;&lt;/span>\u82f1\u6587&lt;span style="color:#a6da95">&amp;#34;: 88, &amp;#34;&lt;/span>\u7269\u7406&lt;span style="color:#a6da95">&amp;#34;:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f5a97f">100&lt;/span>}, &lt;span style="color:#a6da95">&amp;#34;&lt;/span>&lt;span style="color:#8aadf4">\u8521\u54e5&lt;/span>&lt;span style="color:#a6da95">&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;&lt;/span>&lt;span style="color:#8aadf4">\u6578\u5b78&lt;/span>&lt;span style="color:#a6da95">&amp;#34;&lt;/span>: &lt;span style="color:#f5a97f">50&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;&lt;/span>&lt;span style="color:#8aadf4">\u82f1\u6587&lt;/span>&lt;span style="color:#a6da95">&amp;#34;&lt;/span>: &lt;span style="color:#f5a97f">50&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;&lt;/span>&lt;span style="color:#8aadf4">\u7269\u7406&lt;/span>&lt;span style="color:#a6da95">&amp;#34;&lt;/span>: &lt;span style="color:#f5a97f">40&lt;/span>}}}}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Python提供的json模組在進行dump/dumps方法時，&lt;br>
預設所有輸進來的內容全都是ASCII Code，&lt;br>
所以當超出這個範圍，例如我們輸入的中文，&lt;br>
實質上應該要用UTF-8來表達才對。&lt;br>
所以我們改一下它的參數即可：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">json&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>how_json &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> json&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>dumps(how_school, ensure_ascii&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">False&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 我沒有要全ASCII，給我改回來XD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(how_json)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>執行結果如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#34;校長&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;How哥&amp;#34;&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;工友&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;林阿嘉&amp;#34;&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;class&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;A&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;teacher&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;蔡阿嘎&amp;#34;&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;students&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;阿明&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;數學&amp;#34;&lt;/span>: &lt;span style="color:#f5a97f">55&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;英文&amp;#34;&lt;/span>: &lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;物理&amp;#34;&lt;/span>: &lt;span style="color:#f5a97f">55&lt;/span>}, &lt;span style="color:#a6da95">&amp;#34;HowHow&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;數學&amp;#34;&lt;/span>: &lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;英文&amp;#34;&lt;/span>: &lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;物理&amp;#34;&lt;/span>: &lt;span style="color:#f5a97f">40&lt;/span>}}}, &lt;span style="color:#a6da95">&amp;#34;B&amp;#34;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#34;teacher&amp;#34;&lt;/span>: &lt;span style="color:#a6da95">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>二伯&lt;span style="color:#a6da95">&amp;#34;, &amp;#34;&lt;/span>students&lt;span style="color:#a6da95">&amp;#34;: {&amp;#34;&lt;/span>小美&lt;span style="color:#a6da95">&amp;#34;: {&amp;#34;&lt;/span>數學&lt;span style="color:#a6da95">&amp;#34;: 90, &amp;#34;&lt;/span>英文&lt;span style="color:#a6da95">&amp;#34;: 88, &amp;#34;&lt;/span>物理&lt;span style="color:#a6da95">&amp;#34;: 100}, &amp;#34;&lt;/span>蔡哥&lt;span style="color:#a6da95">&amp;#34;: {&amp;#34;&lt;/span>數學&lt;span style="color:#a6da95">&amp;#34;: 50, &amp;#34;&lt;/span>英文&lt;span style="color:#a6da95">&amp;#34;: 50, &amp;#34;&lt;/span>物理&lt;span style="color:#a6da95">&amp;#34;: 40}}}}}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>剛剛是將一個Python的資料結構轉成JSON字串，&lt;br>
那我們想要從JSON字串轉回Python的結構的話，&lt;br>
可以使用loads方法：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> how2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> json&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>loads(how_json) &lt;span style="color:#6e738d;font-style:italic"># 接續前面的how_json&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> how2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;校長&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;How哥&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;工友&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;林阿嘉&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;class&amp;#39;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#39;A&amp;#39;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#39;teacher&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;蔡阿嘎&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;students&amp;#39;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#39;阿明&amp;#39;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">55&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">55&lt;/span>}, &lt;span style="color:#a6da95">&amp;#39;HowHow&amp;#39;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">40&lt;/span>}}}, &lt;span style="color:#a6da95">&amp;#39;B&amp;#39;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#39;teacher&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>二伯&lt;span style="color:#a6da95">&amp;#39;, &amp;#39;&lt;/span>students&lt;span style="color:#a6da95">&amp;#39;: {&amp;#39;&lt;/span>小美&lt;span style="color:#a6da95">&amp;#39;: {&amp;#39;&lt;/span>數學&lt;span style="color:#a6da95">&amp;#39;: 90, &amp;#39;&lt;/span>英文&lt;span style="color:#a6da95">&amp;#39;: 88, &amp;#39;&lt;/span>物理&lt;span style="color:#a6da95">&amp;#39;: 100}, &amp;#39;&lt;/span>蔡哥&lt;span style="color:#a6da95">&amp;#39;: {&amp;#39;&lt;/span>數學&lt;span style="color:#a6da95">&amp;#39;: 50, &amp;#39;&lt;/span>英文&lt;span style="color:#a6da95">&amp;#39;: 50, &amp;#39;&lt;/span>物理&lt;span style="color:#a6da95">&amp;#39;: 40}}}}}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> how2[&lt;span style="color:#a6da95">&amp;#39;校長&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;How哥&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> how2[&lt;span style="color:#a6da95">&amp;#39;工友&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;林阿嘉&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> how2[&lt;span style="color:#a6da95">&amp;#39;class&amp;#39;&lt;/span>][&lt;span style="color:#a6da95">&amp;#39;A&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;teacher&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;蔡阿嘎&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;students&amp;#39;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#39;阿明&amp;#39;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">55&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">55&lt;/span>}, &lt;span style="color:#a6da95">&amp;#39;HowHow&amp;#39;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">40&lt;/span>}}}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我們可以從上面的範例看到，&lt;br>
在使用json時，轉換出來的Python結構，&lt;br>
基本上可以當成是字典，裡面有可能含有串列的部分，&lt;br>
操作起來不會有任何額外的問題，所以這點才對於Python相當重要，&lt;br>
因為直接讀進來一個檔案，就可以做為字典使用是非常方便的一件事情！&lt;/p>
&lt;p>同樣我們再來嘗試一下寫到檔案和讀出來：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 寫入到json，使用json.dump()&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> classA &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> how2[&lt;span style="color:#a6da95">&amp;#39;class&amp;#39;&lt;/span>][&lt;span style="color:#a6da95">&amp;#39;A&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">with&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;classA.json&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;w&amp;#39;&lt;/span>) &lt;span style="color:#c6a0f6">as&lt;/span> f:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> json&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>dump(classA, f)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> classA &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> how2[&lt;span style="color:#a6da95">&amp;#39;class&amp;#39;&lt;/span>][&lt;span style="color:#a6da95">&amp;#39;A&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">with&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;classA.json&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;w&amp;#39;&lt;/span>) &lt;span style="color:#c6a0f6">as&lt;/span> f:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> json&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>dump(classA, f, ensure_ascii&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">False&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 從json讀出，使用json.load()&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">with&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;classA.json&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;r&amp;#39;&lt;/span>) &lt;span style="color:#c6a0f6">as&lt;/span> f:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> reclassA &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> json&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>load(f)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> reclassA
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;teacher&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;蔡阿嘎&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;students&amp;#39;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#39;阿明&amp;#39;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">55&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">55&lt;/span>}, &lt;span style="color:#a6da95">&amp;#39;HowHow&amp;#39;&lt;/span>: {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">40&lt;/span>}}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>最後，提醒讀者留意一件事情：&lt;br>
json當中的每個object必須要是獨一無二的，也就是不可以重名！&lt;br>
其實這點對照一下Python的字典應該就清楚了，&lt;br>
因為Python的字典的key也必須要是獨特的。&lt;br>
那，如果重名會怎樣呢？&lt;br>
一般狀況下，最後面出現的會蓋掉前面的：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> repeated_json &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;{&amp;#34;數學&amp;#34;: 80, &amp;#34;數學&amp;#34;: 50, &amp;#34;數學&amp;#34;: 30}&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> json&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>loads(repeated_json) &lt;span style="color:#6e738d;font-style:italic"># 越考越爛阿QQ&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">30&lt;/span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>當然，json還有不少其他的應用，&lt;br>
有興趣的讀者可以再閱讀相關文件學習：&lt;br>
&lt;a class="link" href="https://docs.python.org/3/library/json.html?highlight=json#command-line-options" target="_blank" rel="noopener"
>https://docs.python.org/3/library/json.html?highlight=json#command-line-options&lt;/a>&lt;/p>
&lt;h3 id="那麼我們來做個練習">那麼，我們來做個練習：
&lt;/h3>&lt;ol>
&lt;li>政府資料開放平臺上有提供不少的免費取用的資料，&lt;br>
請將 &lt;a class="link" href="https://data.gov.tw/dataset/6224" target="_blank" rel="noopener"
>https://data.gov.tw/dataset/6224&lt;/a> 的JSON格式檔案下載下來。&lt;/li>
&lt;li>請用上面示範的方式將其打開並存成一個Python的資料結構，&lt;br>
命名為bs，這中間可能會遇到讀取的問題，&lt;br>
是JSON檔文字編碼的錯誤，&lt;br>
請在打開檔案時額外給入&lt;strong>encoding=”utf-8&amp;quot;&lt;/strong> 的參數。&lt;/li>
&lt;li>bs是一個什麼？(字串？串列？字典？)&lt;/li>
&lt;li>請利用前面所學，將所有位在’臺北市’的書店資訊存成一個串列，&lt;br>
名為taipei。&lt;/li>
&lt;li>taipei中特色書店點閱數超過2000的店家是哪幾家呢？請列出其名字。&lt;/li>
&lt;/ol>
&lt;p>那我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (16) — 檔案讀寫：妳出現在我詩的每一頁(中)</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-16-file-read-write-2/</link><pubDate>Thu, 01 Oct 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-16-file-read-write-2/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (16) — 檔案讀寫：妳出現在我詩的每一頁(中)" />&lt;h2 id="day-16-檔案讀寫妳出現在我詩的每一頁中">Day 16 檔案讀寫：妳出現在我詩的每一頁(中)
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10245278" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10245278&lt;/a>&lt;/p>
&lt;p>上一回我們簡單介紹了如何讀一般的文字檔案，&lt;br>
那如果格式比較特別呢？&lt;br>
通常狀況下，會需要特別格式的原因，&lt;br>
是因為它代表了一段「資料」，&lt;br>
也就是說，讀取不同格式的檔案，&lt;br>
基本上就是在透過大家約定好的格式方法，&lt;br>
將資料從檔案中按規則讀出來。&lt;/p>
&lt;p>以Python來說，最常見被拿來儲存的格式有CSV, XML, YAML, JSON等，&lt;br>
接下來的兩篇文章中，讓我們來分別介紹CSV和JSON吧！&lt;/p>
&lt;h3 id="csv">CSV
&lt;/h3>&lt;p>CSV是相當淺顯易懂的格式，&lt;br>
如果讀者有在用Excel時，存檔時就會看到有CSV的選項。&lt;br>
一般而言，一個CSV檔案中，&lt;br>
每一個**row(列)&lt;strong>的不同單位常以逗號分隔，&lt;br>
(也有用tab鍵的，相當於’\t’)&lt;br>
而&lt;/strong>column(行)**的計算則是以換行符號為準。&lt;br>
(Unix/Mac系統使用’\n’，Windows系統則用’\r\n’)&lt;br>
註：中國和台灣在指稱列跟行時是剛好相反的，容易搞混。&lt;br>
如果沒有特別需求的話，直接使用row/column來對應稱呼橫向/直向就好。&lt;/p>
&lt;p>還記得我們之前的三個同學的成績嗎？&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>ming &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;阿明&amp;#39;&lt;/span>, {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">55&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">55&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;小美&amp;#39;&lt;/span>, {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">90&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">88&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">100&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>howhow &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;HowHow&amp;#39;&lt;/span>, {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">40&lt;/span>})
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果今天我們要使用csv的方式將這個成績記錄起來，&lt;br>
我們可能會考慮寫成這樣：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>姓名, 數學, 英文, 物理
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>阿明, &lt;span style="color:#f5a97f">55&lt;/span>, &lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#f5a97f">55&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>小美, &lt;span style="color:#f5a97f">90&lt;/span>, &lt;span style="color:#f5a97f">88&lt;/span>, &lt;span style="color:#f5a97f">100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>HowHow, &lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#f5a97f">40&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>那麼，我們怎麼存放到csv中呢？&lt;br>
Python中有內建一個&lt;strong>csv&lt;/strong> 的模組，&lt;br>
我們可以用其writer的writerow()或writerows()來處理：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">csv&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">with&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;student.csv&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;w&amp;#39;&lt;/span>, newline&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&amp;#39;&lt;/span>) &lt;span style="color:#c6a0f6">as&lt;/span> f:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> csvw &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> csv&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>writer(f, delimiter&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39; &amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># delimiter預設是&amp;#39;,&amp;#39;，可以自己更改&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> csvw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>writerow([&lt;span style="color:#a6da95">&amp;#39;姓名&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>]) &lt;span style="color:#6e738d;font-style:italic"># 一次寫一個row&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> students &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#a6da95">&amp;#39;阿明&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">55&lt;/span>, &lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#f5a97f">55&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#a6da95">&amp;#39;小美&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">90&lt;/span>, &lt;span style="color:#f5a97f">88&lt;/span>, &lt;span style="color:#f5a97f">100&lt;/span>],
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [&lt;span style="color:#a6da95">&amp;#39;HowHow&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#f5a97f">40&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> csvw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>writerows(students) &lt;span style="color:#6e738d;font-style:italic"># 一次寫多個rows&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>(delimiter是指分隔符號)&lt;br>
特別留意，在使用csv來處理時，開啟檔案請務必設置參數, newline=’’，&lt;br>
以避免掉作業系統對於換行的處理不同的問題。&lt;br>
(全部交由csv writer來處理就好!)&lt;br>
其結果應該如下：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-16-file-read-write-2/image-001.jpg"
width="276"
height="190"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-16-file-read-write-2/image-001_hu0bf28002a420b2efddb903638fd2f651_15945_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-16-file-read-write-2/image-001_hu0bf28002a420b2efddb903638fd2f651_15945_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="145"
data-flex-basis="348px"
>&lt;/p>
&lt;p>接著我們嘗試將其讀回來，&lt;br>
這時候就要改成用csv的reader，&lt;br>
reader的部分比較簡單，我們可以用for…in…的方式來按row取出：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">csv&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">with&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;student.csv&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;r&amp;#39;&lt;/span>) &lt;span style="color:#c6a0f6">as&lt;/span> f:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> csvr &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> csv&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>reader(f, delimiter&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39; &amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic">#&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> student_from_file &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [row &lt;span style="color:#c6a0f6">for&lt;/span> row &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> csvr]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(student_from_file)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>讀出來的結果如下。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#a6da95">&amp;#39;姓名&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>], [&lt;span style="color:#a6da95">&amp;#39;阿明&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;55&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;70&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;55&amp;#39;&lt;/span>], [&lt;span style="color:#a6da95">&amp;#39;小美&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;90&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;88&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;100&amp;#39;&lt;/span>], [&lt;span style="color:#a6da95">&amp;#39;HowHow&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;80&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;60&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;40&amp;#39;&lt;/span>]]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>那麼，如果是要處理字典呢？&lt;br>
我們可以使用&lt;strong>DictWriter/DictReader&lt;/strong> 。&lt;br>
假定我們已經有一段關於三名學生的字典：&lt;br>
{‘姓名’:’阿明’, ‘數學’:55, ‘英文’:70, ‘物理’:55}&lt;br>
{‘姓名’:’小美’, ‘數學’:90, ‘英文’:88, ‘物理’:100}&lt;br>
{‘姓名’:’HowHow’,’數學’:80, ‘英文’:60, ‘物理’:40}&lt;br>
我們可以用如下的方式來寫入：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">csv&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">with&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;student_dic.csv&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;w&amp;#39;&lt;/span>, newline&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&amp;#39;&lt;/span>) &lt;span style="color:#c6a0f6">as&lt;/span> f:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> field &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#a6da95">&amp;#39;姓名&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 第一個row做為欄位名稱&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> csvw &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> csv&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>DictWriter(f, delimiter&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39; &amp;#39;&lt;/span>, fieldnames&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>field)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> csvw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>writeheader()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> csvw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>writerow({&lt;span style="color:#a6da95">&amp;#39;姓名&amp;#39;&lt;/span>:&lt;span style="color:#a6da95">&amp;#39;阿明&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">55&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">55&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> csvw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>writerow({&lt;span style="color:#a6da95">&amp;#39;姓名&amp;#39;&lt;/span>:&lt;span style="color:#a6da95">&amp;#39;小美&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">90&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">88&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">100&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> csvw&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>writerow({&lt;span style="color:#a6da95">&amp;#39;姓名&amp;#39;&lt;/span>:&lt;span style="color:#a6da95">&amp;#39;HowHow&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">40&lt;/span>})
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">with&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;student_dic.csv&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;r&amp;#39;&lt;/span>) &lt;span style="color:#c6a0f6">as&lt;/span> f:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># DictReader將第一個row當做欄位名稱，所以就省略了&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> csvr &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> csv&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>DictReader(f, delimiter&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39; &amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> student &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [row &lt;span style="color:#c6a0f6">for&lt;/span> row &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> csvr]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(student)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>讀出來應該如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[{&lt;span style="color:#a6da95">&amp;#39;姓名&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;阿明&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;55&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;70&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;55&amp;#39;&lt;/span>}, {&lt;span style="color:#a6da95">&amp;#39;姓名&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;小美&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;90&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;88&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;100&amp;#39;&lt;/span>}, {&lt;span style="color:#a6da95">&amp;#39;姓名&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;HowHow&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;80&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;60&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;40&amp;#39;&lt;/span>}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>上面敘述的所有範例，在讀寫未知的檔案時，&lt;br>
我們都無法保證是否csv能夠正常運作，&lt;br>
所以最好還是用一下try…except的方法，&lt;br>
對於csv模組傳出的錯誤，&lt;br>
可以使用&lt;strong>try&lt;/strong> …**except csv.Error as e:**來接取。&lt;/p>
&lt;p>還吃得消嗎？加油！&lt;br>
那我們下一篇再來談談JSON囉！&lt;br>
明天見～&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (15) — 檔案讀寫：妳出現在我詩的每一頁(上)</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-15-file-read-write-1/</link><pubDate>Wed, 30 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-15-file-read-write-1/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (15) — 檔案讀寫：妳出現在我詩的每一頁(上)" />&lt;h2 id="day-15-檔案讀寫妳出現在我詩的每一頁上">Day 15 檔案讀寫：妳出現在我詩的每一頁(上)
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10245133" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10245133&lt;/a>&lt;/p>
&lt;h3 id="先來解答昨天的問題吧">先來解答昨天的問題吧！
&lt;/h3>&lt;p>按部就班仔細寫完應該就沒問題啦！&lt;br>
下面有省略掉前面的一部分東西，讀者也可以自行選擇保留。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">23
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">24
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">25
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">26
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">27
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">28
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">29
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">30
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">31
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">32
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">33
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">34
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">35
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">36
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">37
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">38
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Student&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cp_cnt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 這個變數是屬於整個Student類別的&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__init__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, name, score):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> score
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__eq__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, b):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 為了方便讀者檢查是否有問題&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;self = &lt;/span>&lt;span style="color:#a6da95">%d&lt;/span>&lt;span style="color:#a6da95">, b = &lt;/span>&lt;span style="color:#a6da95">%d&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> (&lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score[&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score[&lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">5&lt;/span>, b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score[&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score[&lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">5&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score[&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score[&lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">5&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score[&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score[&lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__gt__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, b):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score[&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score[&lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">5&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score[&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score[&lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">readMyName&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;聽清楚了，我的名字是&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;!!!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">compare&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, b):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cp_cnt &lt;span style="color:#91d7e3;font-weight:bold">+=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 同樣，印出diff方便檢查正確性，讀者可自行註解掉。&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> diff &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">sum&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>values()) &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#91d7e3">sum&lt;/span>(b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>values())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;diff = &lt;/span>&lt;span style="color:#a6da95">%d&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> diff)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 有冒號的式子如果底下程式碼只有一行，也可以選擇直接和判斷式寫成同一行&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> diff &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;贏了！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">elif&lt;/span> diff &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;什麼？竟然平手？！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">else&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;可...可惡，難道，這就是&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;真正的實力嗎？&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;已比較 &lt;/span>&lt;span style="color:#a6da95">%d&lt;/span>&lt;span style="color:#a6da95"> 次!&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> Student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cp_cnt)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">compareE&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, b):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cp_cnt &lt;span style="color:#91d7e3;font-weight:bold">+=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> b: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39; &amp;gt; &amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">elif&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> b: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39; == &amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">else&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39; &amp;lt; &amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;已比較 &lt;/span>&lt;span style="color:#a6da95">%d&lt;/span>&lt;span style="color:#a6da95"> 次!&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> Student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cp_cnt)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8aadf4;font-weight:bold">@classmethod&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">getCpCount&lt;/span>(&lt;span style="color:#91d7e3">cls&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;目前的比較次數：&lt;/span>&lt;span style="color:#a6da95">%d&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> &lt;span style="color:#91d7e3">cls&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cp_cnt) &lt;span style="color:#6e738d;font-style:italic"># 別忘了print也可以用format類型的形式&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;開始之前&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>getCpCount() &lt;span style="color:#6e738d;font-style:italic"># 開始前先看看是不是0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>ming &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;阿明&amp;#39;&lt;/span>, {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">55&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">55&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ming&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>readMyName()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;小美&amp;#39;&lt;/span>, {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">90&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">88&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">100&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>readMyName()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>howhow &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;HowHow&amp;#39;&lt;/span>, {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">40&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>howhow&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>readMyName()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">來PK吧! 先比總分，再比加權分!&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ming&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>compare(howhow)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ming&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>compareE(howhow)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ming&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>compare(mei)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ming&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>compareE(mei)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>compare(howhow)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>compareE(howhow)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>結果應該如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>開始之前
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>目前的比較次數&lt;span style="color:#ed8796">：&lt;/span>&lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>聽清楚了&lt;span style="color:#ed8796">，&lt;/span>我的名字是阿明&lt;span style="color:#ed8796">!!!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>聽清楚了&lt;span style="color:#ed8796">，&lt;/span>我的名字是小美&lt;span style="color:#ed8796">!!!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>聽清楚了&lt;span style="color:#ed8796">，&lt;/span>我的名字是HowHow&lt;span style="color:#ed8796">!!!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>來PK吧&lt;span style="color:#ed8796">!&lt;/span> 先比總分&lt;span style="color:#ed8796">，&lt;/span>再比加權分&lt;span style="color:#ed8796">!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>diff &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>什麼&lt;span style="color:#ed8796">？&lt;/span>竟然平手&lt;span style="color:#ed8796">？！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>已比較 &lt;span style="color:#f5a97f">1&lt;/span> 次&lt;span style="color:#ed8796">!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">self&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">460&lt;/span>, b &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">460&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>阿明 &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> HowHow
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>已比較 &lt;span style="color:#f5a97f">2&lt;/span> 次&lt;span style="color:#ed8796">!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>diff &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">98&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>可&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>可惡&lt;span style="color:#ed8796">，&lt;/span>難道&lt;span style="color:#ed8796">，&lt;/span>這就是小美真正的實力嗎&lt;span style="color:#ed8796">？&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>已比較 &lt;span style="color:#f5a97f">3&lt;/span> 次&lt;span style="color:#ed8796">!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">self&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">460&lt;/span>, b &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">620&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>阿明 &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span> 小美
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>已比較 &lt;span style="color:#f5a97f">4&lt;/span> 次&lt;span style="color:#ed8796">!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>diff &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">98&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>小美贏了&lt;span style="color:#ed8796">！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>已比較 &lt;span style="color:#f5a97f">5&lt;/span> 次&lt;span style="color:#ed8796">!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>小美 &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> HowHow
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>已比較 &lt;span style="color:#f5a97f">6&lt;/span> 次&lt;span style="color:#ed8796">!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>今天我們來談談資料的讀寫。&lt;br>
對Python來說，一旦程式結束，&lt;br>
或退出Python直譯器，前面做過的事情，&lt;br>
產生的變數等都會被清理一空，消失不見。&lt;br>
為什麼呢？程式執行途中，所有的變數等東西要存放在記憶體中，&lt;br>
在離開時，空間自然要還回去才不會浪費嘛！&lt;/p>
&lt;p>那麼，如果我們想保留中途取得的結果該怎麼辦呢？&lt;br>
可以選擇存放到檔案中，或者是資料庫裡，&lt;br>
我們先簡單介紹一些檔案存取的方法。&lt;/p>
&lt;p>對Python來說，要讀寫一個檔案前，&lt;br>
要先打開它(開啟舊檔嘛XD！)。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 方法一&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>file &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(name, mode)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> (使用file來處理檔案)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>file&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>close() &lt;span style="color:#6e738d;font-style:italic"># 用完要關閉檔案&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 方法二&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">with&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(name, mode) &lt;span style="color:#c6a0f6">as&lt;/span> file:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>(使用file來處理檔案)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 離開這個with的區塊以後，file自動關閉。&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>open會找尋name的檔案，並以mode的模式開啟，&lt;br>
開啟成功的話，會回傳一個檔案物件，我們用file的名字來接取它。&lt;br>
mode模式是一個字串，通常狀況下會有1~2個字母，其代表涵義如下：&lt;br>
第一個字母：&lt;br>
&lt;strong>‘r’&lt;/strong> -&amp;gt; 讀取(read)&lt;br>
&lt;strong>‘w’&lt;/strong> -&amp;gt; 寫入(write)(但不給r預設還是會可讀)&lt;br>
&lt;strong>‘x’&lt;/strong> -&amp;gt; 新增檔案(exclusive creation)，如果檔案已存在則回傳錯誤&lt;br>
&lt;strong>‘a’&lt;/strong> -&amp;gt; 在結尾處寫入(append)&lt;br>
第二個字母：&lt;br>
&lt;strong>‘b’&lt;/strong> -&amp;gt; 用二進位的方式來處理&lt;br>
(預設則是當成文字來處理)&lt;br>
&lt;strong>‘+’號：&lt;/strong> -&amp;gt; 更新(updating) (可讀可寫)&lt;br>
通常會用’r+’，代表可讀可寫。&lt;/p>
&lt;p>我們先來看看怎麼樣將七里香的片段寫進詩裡：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;poem.txt&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;w&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>write(&lt;span style="color:#a6da95">&amp;#39;院子落葉&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">跟我的思念厚厚一疊&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># write結束時會回傳寫入的字數(byte數)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">14&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>close() &lt;span style="color:#6e738d;font-style:italic"># 要先close()以後，才會真的寫入完畢！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>讀者可以在python執行的位置或者執行.py檔的位置，&lt;br>
找到一個poem.txt，其內容如下：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-15-file-read-write-1/image-001.png"
width="275"
height="124"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-15-file-read-write-1/image-001_hu03069fc34da33f9138abdba44219f5eb_49531_480x0_resize_box_3.png 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-15-file-read-write-1/image-001_hu03069fc34da33f9138abdba44219f5eb_49531_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="221"
data-flex-basis="532px"
>&lt;/p>
&lt;p>讀者如果多加嘗試的話，可以發現如果再次讀檔寫檔，&lt;br>
前面的內容會被&lt;strong>全數覆蓋&lt;/strong> ！&lt;br>
除了用了write()以外，print()也可以拿來輸出到檔案，&lt;br>
其方法如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;poem.txt&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;w&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;院子落葉&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">跟我的思念厚厚一疊&amp;#39;&lt;/span>, file&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>f, sep&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&amp;#39;&lt;/span>, end&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>close() &lt;span style="color:#6e738d;font-style:italic"># 要先close()以後，才會真的寫入完畢！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我們將print()的目標指向到檔案去，&lt;br>
所以它就不會把字串印在命令列；&lt;br>
同時，由於print()預設會有&lt;strong>sep(分隔符號)和end(結束符號)&lt;/strong> ，&lt;br>
&lt;strong>sep預設會是一個空格，end預設會是換行&lt;/strong> ，&lt;br>
所以我們要自行將其設定為空字串，避免寫進去的東西不如預期。&lt;/p>
&lt;p>另一方面，如果字串很大，不適合直接一口氣處理完，&lt;br>
也可以考慮使用slice的方法分段處理。&lt;br>
(自己決定每段要寫入多少字元，搭配迴圏操作)&lt;/p>
&lt;p>由於檔案讀取使用**’x’**的話會有機會產生錯誤，&lt;br>
在其他很多狀況下也有產生錯誤的可能，&lt;br>
一般我們在使用檔案處理的相關函式時，&lt;br>
會用try…except…來將其包含進來。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">try&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> f &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;poem.txt&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;x&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>write(&lt;span style="color:#a6da95">&amp;#39;窗外的麻雀&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#c6a0f6">except&lt;/span> &lt;span style="color:#f5a97f">FileExistsError&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 想直接全包也行啦XD!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;檔案已存在!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>檔案已存在&lt;span style="color:#ed8796">!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來是讀取檔案的部分：&lt;br>
讀檔就比寫入還要更在意一次讀的內容了，&lt;br>
Python提供了三個用來讀取的函式：&lt;br>
&lt;strong>read(), readline(), readlines()&lt;/strong> 。&lt;br>
read()的本質和write()接近，就是有什麼讀什麼，&lt;br>
就算今天是全本小說也照讀不誤，所以特別要留意這點！&lt;br>
當不確定自己要讀的檔案大小時，千萬不要直接一口氣讀全部啊！&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;poem.txt&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;r&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> poem &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>read()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(poem)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>院子落葉
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>跟我的思念厚厚一疊
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>close()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>read()也可以傳入字數來限制每次要讀幾個字元：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;poem.txt&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;r&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> poem &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">while&lt;/span> &lt;span style="color:#f5a97f">True&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3">next&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>read(&lt;span style="color:#f5a97f">3&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 每次只讀3個字&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#c6a0f6">if&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">not&lt;/span> &lt;span style="color:#91d7e3">next&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 讀到結尾時，會產生空字串給next&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#c6a0f6">break&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> poem &lt;span style="color:#91d7e3;font-weight:bold">+=&lt;/span> &lt;span style="color:#91d7e3">next&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(poem)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>院子落葉
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>跟我的思念厚厚一疊
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>close()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>讀者也可以自行嘗試在迴圈中印看看next。&lt;/p>
&lt;p>接下來是readline()，&lt;br>
readline()每次會以行為單位將檔案讀出來：&lt;br>
為了更明確表現整個狀況，我們先將poem.txt更改如下：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-15-file-read-write-1/image-002.png"
width="325"
height="266"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-15-file-read-write-1/image-002_hue03b71bd812deef62f8f844aa53e0833_82205_480x0_resize_box_3.png 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-15-file-read-write-1/image-002_hue03b71bd812deef62f8f844aa53e0833_82205_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="122"
data-flex-basis="293px"
>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>close()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;poem.txt&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;r&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> cnt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> poem &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">while&lt;/span> &lt;span style="color:#f5a97f">True&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> cnt &lt;span style="color:#91d7e3;font-weight:bold">+=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> line &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>readline()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#c6a0f6">if&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">not&lt;/span> line: &lt;span style="color:#c6a0f6">break&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;Line &lt;/span>&lt;span style="color:#a6da95">%d&lt;/span>&lt;span style="color:#a6da95">: &lt;/span>&lt;span style="color:#a6da95">%s&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> (cnt, line), end&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> poem &lt;span style="color:#91d7e3;font-weight:bold">+=&lt;/span> line
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Line &lt;span style="color:#f5a97f">1&lt;/span>: 院子落葉
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Line &lt;span style="color:#f5a97f">2&lt;/span>: 跟我的思念厚厚一疊
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Line &lt;span style="color:#f5a97f">3&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Line &lt;span style="color:#f5a97f">4&lt;/span>: 幾句誓言
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Line &lt;span style="color:#f5a97f">5&lt;/span>: 也無法將我的熱情冷卻
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Line &lt;span style="color:#f5a97f">6&lt;/span>: &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>close()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我們可以看到在readline()時，換行的符號是被算進去的，&lt;br>
&lt;strong>就算尾端只有幾個空白字元&lt;/strong> ，照樣也會被算做一行。&lt;/p>
&lt;p>readlines()則又再友善一點，&lt;br>
會按行將讀出來的每一行為單位組成list。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> f &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">open&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;poem.txt&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;r&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lines &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> f&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>readlines()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lines
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;院子落葉&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;跟我的思念厚厚一疊&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;幾句誓言&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;也無法將我的熱情冷卻&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39; &amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>今天我們已經介紹了基礎的讀寫檔案，&lt;br>
下一篇我們再來介紹比較進一步地使用模組來讀一些常見的檔案格式。&lt;/p>
&lt;p>那我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (14) — 物件與類別：我們不一樣，每個人都有不同的際遇(下)</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-14-object-and-class-3/</link><pubDate>Tue, 29 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-14-object-and-class-3/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (14) — 物件與類別：我們不一樣，每個人都有不同的際遇(下)" />&lt;h2 id="day-14-物件與類別我們不一樣每個人都有不同的際遇下">Day 14 物件與類別：我們不一樣，每個人都有不同的際遇(下)
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10244886" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10244886/&lt;/a>&lt;/p>
&lt;p>前面兩篇我們從什麼是類別和物件的基本介紹起，&lt;br>
講到如何初始化及設定屬性、方法，以及如何運用繼承。&lt;/p>
&lt;p>這篇我們首先要談的是，&lt;br>
什麼時候該用類別/物件，什麼時候又該用模組呢？&lt;/p>
&lt;p>其實答案很簡單：&lt;br>
看怎麼用比較方便，就怎麼用XD！&lt;/p>
&lt;p>讀者可能會覺得這是廢話，先別著急，讓筆者解釋一下。&lt;br>
在程式的世界裡，當我們遇上問題時，&lt;br>
&lt;strong>大部分的狀況下都不會只有一種解法&lt;/strong> 。&lt;br>
不同的解法，會有不同的優劣性，&lt;br>
扣除掉一些根本效率的不同，剩下的就只是取捨問題。&lt;br>
所以當碰到多個可行的選項，在考慮用哪一個方法時，&lt;br>
請先問問自己以下的問題：&lt;/p>
&lt;ol>
&lt;li>題目(或現實的目標)是否有限制，導致某些方法其實不能用？&lt;/li>
&lt;li>這當中，哪些是前面寫起來比較簡單，後面維護(或擴充)比較麻煩的？&lt;br>
哪些是前面寫起來比較複雜，後面卻可以節省力氣的？&lt;/li>
&lt;li>承2，在大前提的目標下，這個架構有需要考慮到後面的問題嗎？&lt;/li>
&lt;/ol>
&lt;p>以上三個問題會影響實務上的選擇，&lt;br>
所以你可以基於節省空間考量而選方法A，&lt;br>
或基於節省時間而選方法B，亦或是為了架構比較好選方法C，&lt;br>
不會有絕對的對錯，只是看考量而已。&lt;/p>
&lt;p>扯遠了，回過頭來看物件/類別及模組的抉擇。&lt;br>
通常模組會比物件/類別還要精簡，因為不會牽扯到太多額外的東西；&lt;br>
&lt;strong>但模組在一個程式中import時，只會產生同一個東西，而類別可以產生多個不同的物件。&lt;/strong>&lt;br>
當你的程式都是一些工具型函式，屬於那種呼叫完就會經過一番處理再輸出，&lt;br>
但不會需要產生多個不同的物件來處理事情的話，&lt;br>
以模組的型式處理會相當簡單。&lt;/p>
&lt;p>舉例來說，一個學校只會有一個校長，校長可能有一些事情是他的權責範圍，&lt;br>
假設我們只鎖定一間學校，那校長能做的事情應該就可以直接以一個模組來囊括，&lt;br>
因為同一間學校總不會出現第二位校長嘛！所以我們可以用模組來定義所有校長的業務。&lt;br>
但學生就不行了，我們會有阿明，小美，HowHow跟其他路人甲乙丙丁，&lt;br>
所以學生就適合建立一個Student的類別來生成多個物件。&lt;br>
另一點是阿明和小美雖然都是學生，但它們會有屬性的差異，&lt;br>
這種有相同性質但屬性質不同的，最適合使用類別與物件來處理了！&lt;/p>
&lt;p>另一方面，&lt;strong>模組是不行繼承的&lt;/strong> ，如果你有繼承的需求的話，&lt;br>
類別與物件就是唯一的選擇。&lt;/p>
&lt;p>最後一點，如果可以用簡單的方式如字典、串列甚至一般函式來處理的話，&lt;br>
&lt;strong>不一定非得要模組或類別/物件不可&lt;/strong> 。&lt;/p>
&lt;p>接著我們來談談&lt;strong>類別方法&lt;/strong> 及&lt;strong>類別屬性&lt;/strong> 。&lt;br>
類別方法是指會影響整個類別的方法，類別屬性則是指整個類別所共有的屬性。&lt;br>
舉例來說，如果我們想要知道今天我們總共加入了幾個Student類別的物件，&lt;br>
我們可以這麼寫：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Student&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cnt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 這個變數是屬於整個Student類別的&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__init__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, name, score):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cnt &lt;span style="color:#91d7e3;font-weight:bold">+=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 每次新開一個Student的物件，計數器就會+1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> score
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">readMyName&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;聽清楚了，我的名字是&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;!!!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">compare&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, b):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> diff &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">sum&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>values()) &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#91d7e3">sum&lt;/span>(b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>values())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 有冒號的式子如果底下程式碼只有一行，也可以選擇直接和判斷式寫成同一行&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> diff &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;贏了！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">elif&lt;/span> diff &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;什麼？竟然平手？！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">else&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;可...可惡，難道，這就是&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;真正的實力嗎？&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8aadf4;font-weight:bold">@classmethod&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">getCount&lt;/span>(&lt;span style="color:#91d7e3">cls&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;目前的學生總數：&lt;/span>&lt;span style="color:#a6da95">%d&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> &lt;span style="color:#91d7e3">cls&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>cnt) &lt;span style="color:#6e738d;font-style:italic"># 別忘了print也可以用format類型的形式&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;開始之前&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>getCount()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>ming &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;阿明&amp;#39;&lt;/span>, {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">55&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">55&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ming&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>readMyName()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>getCount()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>mei &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;小美&amp;#39;&lt;/span>, {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">90&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">88&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">100&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>readMyName()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>getCount()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>howhow &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;HowHow&amp;#39;&lt;/span>, {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">40&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>howhow&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>readMyName()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Student&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>getCount()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>結果應該像這樣：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>開始之前
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>目前的學生總數&lt;span style="color:#ed8796">：&lt;/span>&lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>聽清楚了&lt;span style="color:#ed8796">，&lt;/span>我的名字是阿明&lt;span style="color:#ed8796">!!!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>目前的學生總數&lt;span style="color:#ed8796">：&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>聽清楚了&lt;span style="color:#ed8796">，&lt;/span>我的名字是小美&lt;span style="color:#ed8796">!!!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>目前的學生總數&lt;span style="color:#ed8796">：&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>聽清楚了&lt;span style="color:#ed8796">，&lt;/span>我的名字是HowHow&lt;span style="color:#ed8796">!!!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>目前的學生總數&lt;span style="color:#ed8796">：&lt;/span>&lt;span style="color:#f5a97f">3&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>對於類別方法，我們會在前面加上**”@classmethod”&lt;strong>，&lt;br>
同時由於&lt;/strong>”class”** 已經是Python的保留字(用來定義類別)，&lt;br>
所以在使用時Python是給定**”cls”** ，用來指稱這個類別。&lt;br>
不過直接使用**Student.cnt**也可以，意思是一樣的。&lt;br>
所以請留意類別方法/屬性和物件方法/屬性的差異，&lt;br>
前者是屬於整個類別，後者是會依照產生的物件來操作。&lt;br>
可以看到即便在開始之前，&lt;br>
我們還沒加入任何Student，類別屬性就已經存在了。&lt;/p>
&lt;p>還有一種比較特別的方法叫&lt;strong>靜態方法&lt;/strong> 。&lt;br>
使用”@staticmethod”來開頭，不需要self或cls參數，&lt;br>
通常用以處理可以固定不變，不受其他屬性影響的東西。&lt;br>
例如：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Desolve&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8aadf4;font-weight:bold">@staticmethod&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">ads&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;無情工商時間!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;從LeetCode學演算法是一系列非常好的課程!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;https://bit.ly/leetcodeall&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>Desolve&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>ads()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>同樣，無須Desolve類別產生物件，這個方法就能被使用(甚至也沒有用到其他屬性)。&lt;/p>
&lt;p>一個類別也可以繼承不只一個類別，例如假設我們有A, B兩個類別，&lt;br>
想用一個C類別同時繼承它們：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">C&lt;/span>(A, B):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>這麼一來，C就會同時擁有A跟B的屬性和方法。&lt;br>
那麼，如果相衝突(比方說重名)怎麼辦？&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">A&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__init__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;A&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;A&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;Name = &amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">B&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__init__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;B&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;B&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;Name = &amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">C&lt;/span>(A, B):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">pass&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>test &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> C()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>輸出應該會如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>A
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Name &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> A
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>簡單來說，當A跟B有相同的方法時，&lt;br>
呼叫方法會呼叫哪一個，端看你把誰寫前面，&lt;strong>寫越前面的優先程度越大&lt;/strong> 。&lt;br>
(讀者可以自行將C(A, B)改成C(B, A)看看結果)&lt;br>
其他還有一些更深入的變化，我們就不在這個系列討論了，&lt;br>
有興趣的讀者可以再深入研究繼承多個類別的變化。&lt;/p>
&lt;p>最後，我們來談談特殊的方法：&lt;br>
當我們在Python內使用那些 ==, !=, &amp;gt;=, &amp;lt;=, &amp;gt;, &amp;lt;……等比較運算子時，&lt;br>
其實是依靠Python有對這些東西做定義，才知道如何去做比較；&lt;br>
但是對於我們自己生成的類別來說，想要比較兩個相同類別的物件，&lt;br>
可能就需要我們自己定義了。&lt;br>
例如說假設有一個類別叫nmod3()，會紀錄數字並判斷餘數是否相等：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">nmod3&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__init__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, num):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>num &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> num
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__eq__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, n2): &lt;span style="color:#6e738d;font-style:italic"># 定義 &amp;#34;==&amp;#34;這個運算子為是否除以3的餘數相同&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>num &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> n2&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>num &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>a &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> nmod3(&lt;span style="color:#f5a97f">11&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 除以3餘2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>b &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> nmod3(&lt;span style="color:#f5a97f">18&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 除以3餘0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>c &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> nmod3(&lt;span style="color:#f5a97f">17&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 除以3餘2&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(a &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> b)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(a &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> c)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(b &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> c)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>可以被特別定義的除了比較運算子以外，還有之前我們提到過的算術運算子等。&lt;br>
這裡稍微列出一些提供參考：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 這些都是兩個物件相比，我們假定後面的物件叫b。&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8aadf4">__eq__&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> b
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8aadf4">__ne__&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">!=&lt;/span> b
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8aadf4">__lt__&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span> b
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8aadf4">__gt__&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> b
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8aadf4">__add__&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> b
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8aadf4">__mul__&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> b &lt;span style="color:#6e738d;font-style:italic"># 原來字串的乘法是這麼弄出來的XD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8aadf4">__len__&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">len&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 可以定義什麼是你的物件的&amp;#34;長度&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>(其他有需要再Google即可XD)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="那我們一樣來練習一下題目吧">那我們一樣來練習一下題目吧！
&lt;/h3>&lt;ol>
&lt;li>請參照之前的Student類別，&lt;br>
假設今天有一個科系要求是(數學 * 2 + 英文 * 5)的加權分數採計，&lt;br>
定義__gt__(也就是&amp;gt;), __eq__(也就是==)，&lt;br>
用上面的採計方式及重新定義的比較運算子來寫成新的A.compareE(B)函式，&lt;br>
假設：&lt;br>
A的加權分高於B -&amp;gt; A的名字 + ‘ &amp;gt; ‘ + B的名字&lt;br>
A的加權分等於B -&amp;gt; A的名字 + ‘ == ‘ + B的名字&lt;br>
A的加權分小於B -&amp;gt; A的名字 + ‘ &amp;lt; ‘ + B的名字&lt;br>
並分別讓阿明和HowHow比較、&lt;br>
阿明和小美比較、小美和HowHow比較，輸出結果。&lt;br>
(請保留之前compare的函式及呼叫的比較，我們兩種都要比呦!)&lt;/li>
&lt;li>承上，請使用類別方法和屬性，在每次進行比較時就將總比較次數+1，&lt;br>
並print出來，這邊的「比較」是指compare()及compareE()都算。&lt;/li>
&lt;/ol>
&lt;p>辛苦啦！那我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (13) — 物件與類別：我們不一樣，每個人都有不同的際遇(中)</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-13-object-and-class-2/</link><pubDate>Mon, 28 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-13-object-and-class-2/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (13) — 物件與類別：我們不一樣，每個人都有不同的際遇(中)" />&lt;h2 id="day-13-物件與類別我們不一樣每個人都有不同的際遇中">Day 13 物件與類別：我們不一樣，每個人都有不同的際遇(中)
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10244495" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10244495&lt;/a>&lt;/p>
&lt;h3 id="先來解答昨天的問題吧">先來解答昨天的問題吧！
&lt;/h3>&lt;p>我們可以修改上一篇的範例，並且新增一個compare方法，&lt;br>
由於比較的時候，我們利用self就可以取得現在的物件，&lt;br>
那麼從外面傳入的，我們直接將其稱為b，&lt;br>
&lt;strong>要比較的就會是self.score的分數總和，和b.score的分數總和的關係。&lt;/strong>&lt;br>
這邊繼續介紹好用的小函式：&lt;br>
由於前面我們講過字典，要取所有的值的部分&lt;br>
(因為沒有加權嘛，就不用管科目了XD)，&lt;br>
是用.values()，那要加總在一起，&lt;br>
我們可以用&lt;strong>for … in …的方式一個一個加起來，&lt;br>
或者，我們可以使用sum()函式&lt;/strong>，&lt;br>
它可以把一個可以算值的一組資料給加總起來。&lt;br>
於是一切就簡單啦！剩下的就是依照結果輸出。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">23
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">24
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">25
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">26
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">27
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Student&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__init__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, name, score):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> score
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">readMyName&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;聽清楚了，我的名字是&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;!!!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">compare&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, b):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> diff &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">sum&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>values()) &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#91d7e3">sum&lt;/span>(b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>score&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>values())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 有冒號的式子如果底下程式碼只有一行，也可以選擇直接和判斷式寫成同一行&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> diff &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;贏了！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">elif&lt;/span> diff &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;什麼？竟然平手？！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">else&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;可...可惡，難道，這就是&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;真正的實力嗎？&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ming &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;阿明&amp;#39;&lt;/span>, {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">55&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">55&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;小美&amp;#39;&lt;/span>, {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">90&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">88&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">100&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>howhow &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;HowHow&amp;#39;&lt;/span>, {&lt;span style="color:#a6da95">&amp;#39;數學&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;英文&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;物理&amp;#39;&lt;/span>:&lt;span style="color:#f5a97f">40&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(ming&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(mei&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(how&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">阿明 vs HowHow&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ming&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>compare(how)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">阿明 vs 小美&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ming&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>compare(mei)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">小美 vs HowHow&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>compare(how)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我們今天繼續來講物件與類別。&lt;br>
上一篇我們介紹了一個基本的類別是怎麼被做出來的，&lt;br>
也提到了初始化的函式，設定它們的屬性等做法。&lt;br>
在實際運用上，我們會遇到一個問題：&lt;br>
今天遇到更細項的屬性時，我們是否要將其設定到現有的類別呢？&lt;br>
如果這麼做的話，有時候會導致通用性不夠的問題。&lt;/p>
&lt;p>例如：&lt;br>
對於一輛車子來說，它是Tesla的話，有可能會有自動駕駛功能，&lt;br>
但如果它是一般的車子的話，自動駕駛顯然不是一個正常會有的功能。&lt;br>
所以當我們有一個名為Car的類別時，&lt;br>
我們想要定義一個Tesla的Car，應該為其增設一個Tesla的類別，&lt;br>
而非直接在Car新增自動駕駛的功能。&lt;/p>
&lt;p>但Tesla應該還是擁有Car的基本特性，所以我們可以利用這點，&lt;br>
避免掉重新設定一個全新的類別。這就是我們要介紹的方法：&lt;strong>繼承&lt;/strong> 。&lt;br>
在繼承的概念裡，&lt;br>
原先Car的類別被稱為「父類別」、「超類別」或「基礎類別」，&lt;br>
(parent/super/base class)&lt;br>
而要做出來的Tesla被稱為「子類別」或「衍生類別」&lt;br>
(subclass/derived class)&lt;br>
定義子類別的話，只要在子類別的括號內加入父類別的名稱即可：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Car&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">whoami&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;I&lt;/span>&lt;span style="color:#8aadf4">\&amp;#39;&lt;/span>&lt;span style="color:#a6da95">m a Car!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Tesla&lt;/span>(Car):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">pass&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>car &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Car()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tla &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Tesla()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>car&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>whoami()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tla&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>whoami()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>讀者會發現，在Tesla中儘管尚未定義whoami()，&lt;br>
結果仍然會輸出，而輸出的結果其實是按照Car的whoami()來執行的：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>I&lt;span style="color:#a6da95">&amp;#39;m a Car!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>I&lt;span style="color:#a6da95">&amp;#39;m a Car!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>因為我們已經從Car這邊繼承過來了其屬性和方法，&lt;br>
所以Tesla也會有whoami的方法。&lt;br>
我們當然也可以把whoami做一下改變，並新增一些我們需要的東西：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Car&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">whoami&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;I&lt;/span>&lt;span style="color:#8aadf4">\&amp;#39;&lt;/span>&lt;span style="color:#a6da95">m a Car!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Tesla&lt;/span>(Car):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__init__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pilotmode &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># ON: 1, OFF: 0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">whoami&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;I&lt;/span>&lt;span style="color:#8aadf4">\&amp;#39;&lt;/span>&lt;span style="color:#a6da95">m a Tesla, not a trash car!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">autopilot_switch&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pilotmode &lt;span style="color:#91d7e3;font-weight:bold">^=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># ^是取XOR(互斥或)，所以會在0和1之間切換&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pilotmode &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;Auto-pilot mode switch off!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">else&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;Auto-pilot mode switch on!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>car &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Car()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tla &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Tesla()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>car&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>whoami()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tla&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>whoami()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tla&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>autopilot_switch()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tla&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>autopilot_switch()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>上面的示範中，我們為Tesla新增一個屬性，&lt;br>
用來表示自動駕駛模式是否開啟，&lt;br>
並提供一個切換開關的方法。但這是Tesla的東西，&lt;br>
所以Car並不會有autopilot_switch()，&lt;br>
讀者可以嘗試使用car.autopilot_switch()看看，應該會出現錯誤。&lt;/p>
&lt;p>同時留意我們也重寫了一次whoami，&lt;br>
這個將父類別有的函式，重新給予定義的做法，&lt;br>
稱為&lt;strong>override(覆寫/覆載)&lt;/strong> 。&lt;br>
整個執行的結果會如下所示：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>I&lt;span style="color:#a6da95">&amp;#39;m a Car!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>I&lt;span style="color:#a6da95">&amp;#39;m a Tesla, not a trash car!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Auto&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>pilot mode switch off&lt;span style="color:#ed8796">!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Auto&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>pilot mode switch on&lt;span style="color:#ed8796">!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>讀者可能會問：&lt;br>
「那如果我們想要覆寫父類別的方法，&lt;br>
又想用到原先的內容，那該怎麼做呢？」&lt;br>
這時候，我們就需要使用super()來取得父類別的東西了！&lt;br>
舉例來說，假設我們對每一輛車都會給它自己一個名字，&lt;br>
在whoami時，會先喊出自己的名字，我們可以修改上面的內容變成這樣：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Car&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__init__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, name):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">whoami&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;My name is &amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;I&lt;/span>&lt;span style="color:#8aadf4">\&amp;#39;&lt;/span>&lt;span style="color:#a6da95">m a Car!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Tesla&lt;/span>(Car):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__init__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, name, mode):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">super&lt;/span>()&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>&lt;span style="color:#8aadf4">__init__&lt;/span>(name) &lt;span style="color:#6e738d;font-style:italic"># 使用super來對name初始化，看起來稍微多此一舉，但可以保證對於name處理的一致性，之後如果要額外針對Car這個父類別修改時，就可以一起同時影響到Tesla這邊&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pilotmode &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> mode
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">whoami&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">super&lt;/span>()&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>whoami() &lt;span style="color:#6e738d;font-style:italic"># 先喊名字跟喊自己是輛車&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;Also, I&lt;/span>&lt;span style="color:#8aadf4">\&amp;#39;&lt;/span>&lt;span style="color:#a6da95">m a Tesla, not a trash car!&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 這兩行再做只有Tesla會做的事情&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;Auto-pilot mode: &amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pilotmode))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">autopilot_switch&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pilotmode &lt;span style="color:#91d7e3;font-weight:bold">^=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pilotmode &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;Auto-pilot mode switch off!&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">else&lt;/span>: &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;Auto-pilot mode switch on!&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>car &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Car(&lt;span style="color:#a6da95">&amp;#39;CC&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tla &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Tesla(&lt;span style="color:#a6da95">&amp;#39;TT&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>car&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>whoami()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tla&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>whoami()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tla&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>autopilot_switch()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tla&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>whoami()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>tla&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>autopilot_switch()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>其執行結果應該像這樣：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>My name &lt;span style="color:#91d7e3;font-weight:bold">is&lt;/span> CC
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>I&lt;span style="color:#a6da95">&amp;#39;m a Car!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>My name &lt;span style="color:#91d7e3;font-weight:bold">is&lt;/span> TT
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>I&lt;span style="color:#a6da95">&amp;#39;m a Car!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Also, I&lt;span style="color:#a6da95">&amp;#39;m a Tesla, not a trash car!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Auto&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>pilot mode: &lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Auto&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>pilot mode switch on&lt;span style="color:#ed8796">!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>My name &lt;span style="color:#91d7e3;font-weight:bold">is&lt;/span> TT
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>I&lt;span style="color:#a6da95">&amp;#39;m a Car!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Also, I&lt;span style="color:#a6da95">&amp;#39;m a Tesla, not a trash car!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Auto&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>pilot mode: &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Auto&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>pilot mode switch off&lt;span style="color:#ed8796">!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>辛苦啦！在接下來的篇幅中，我們會再談談類別方法及靜態方法，&lt;br>
還有討論一下什麼時候該用類別/物件，什麼時候又該用模組的問題。&lt;/p>
&lt;p>那我們就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (12) — 物件與類別：我們不一樣，每個人都有不同的際遇(上)</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-12-object-and-class-1/</link><pubDate>Sun, 27 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-12-object-and-class-1/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (12) — 物件與類別：我們不一樣，每個人都有不同的際遇(上)" />&lt;h2 id="day-12-物件與類別我們不一樣每個人都有不同的際遇上">Day 12 物件與類別：我們不一樣，每個人都有不同的際遇(上)
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10244018" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10244018&lt;/a>&lt;/p>
&lt;h3 id="先來解答昨天的問題吧">先來解答昨天的問題吧！
&lt;/h3>&lt;ol>
&lt;li>給定兩個字串s跟t，已經知道t的組成，&lt;br>
是將s的字母打亂以後進行重組，再隨機加上一個字母。&lt;br>
請用前面所學，找出被加上的那個字母。&lt;/li>
&lt;/ol>
&lt;p>以這題來說，我們可以採用內建的方式來處理，&lt;br>
或者使用上一篇提到的Counter()。&lt;br>
首先，讓我們再額外教一對有用的方法：ord()跟chr()。&lt;/p>
&lt;p>一般狀況下，程式語言中有時候會提到char(字元)這個單位，&lt;br>
字元的單位就是單一一個英文字母或符號，&lt;br>
是用8個二進位來組成，有定義的有128個不同的字元。&lt;br>
這種字元的表達方是我們稱之為&lt;strong>ASCII Code&lt;/strong> (阿斯奇扣德)。&lt;br>
更詳細的介紹可以看 &lt;a class="link" href="https://zh.wikipedia.org/wiki/ASCII" target="_blank" rel="noopener"
>https://zh.wikipedia.org/wiki/ASCII&lt;/a> 。&lt;/p>
&lt;p>我們只需要知道，ASCI Code上面65&lt;del>90是A&lt;/del>Z，而97&lt;del>122是a&lt;/del>z。&lt;br>
而要如何在數字和對應的字元做轉換呢？&lt;br>
在Python中會使用&lt;strong>ord()&lt;/strong> ，也就是order，&lt;br>
將一個字元轉成對應的ASCII Code；&lt;br>
而使用&lt;strong>chr()&lt;/strong> ，則可以將一個數字轉為對應的字元。&lt;/p>
&lt;p>利用這點，我們可以取一個長度為26的list，&lt;br>
把a放到list的index 0，b放到list的index 1…，z放到list的index 25。&lt;br>
什麼？你不記得哪個數字對應的ASCII Code？&lt;br>
我們只需要拿ord(‘a’)為基準去相減就好囉！&lt;br>
因此，我們要做的事情就是將s的東西全部當做減1次，&lt;br>
t的東西全部當做加1次，最後因為t只比s多一個字元而已，&lt;br>
留下來計數是1的那個就會是答案囉！&lt;/p>
&lt;p>如果先減後加的話，只要我們找到即將由0轉1的時候的那個字元，&lt;br>
就是我們要的答案囉！&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 變數後面加冒號，再加資料型態，可以提示輸入的資料型態。&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 但實質上Python並不會強制檢查是否正確。&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># &amp;#34;-&amp;gt;&amp;#34; 後面接的則是回傳的資料型態&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">findTheDifference&lt;/span>(s: &lt;span style="color:#91d7e3">str&lt;/span>, t: &lt;span style="color:#91d7e3">str&lt;/span>) &lt;span style="color:#91d7e3;font-weight:bold">-&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cnt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#f5a97f">0&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">26&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> c &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> s:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cnt[&lt;span style="color:#91d7e3">ord&lt;/span>(c) &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#91d7e3">ord&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>)] &lt;span style="color:#91d7e3;font-weight:bold">-=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> c &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> t:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> cnt[&lt;span style="color:#91d7e3">ord&lt;/span>(c) &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#91d7e3">ord&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>)] &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>: &lt;span style="color:#c6a0f6">return&lt;/span> c
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cnt[&lt;span style="color:#91d7e3">ord&lt;/span>(c) &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#91d7e3">ord&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>)] &lt;span style="color:#91d7e3;font-weight:bold">+=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>第二種方法，我們可以直接使用Counter()。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">findTheDifference&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, s: &lt;span style="color:#91d7e3">str&lt;/span>, t: &lt;span style="color:#91d7e3">str&lt;/span>) &lt;span style="color:#91d7e3;font-weight:bold">-&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">collections&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> Counter
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cnt_s &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Counter(s)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cnt_t &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Counter(t)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># most_common(1)[0]取到了唯一的一組，再一個[0]取到key的部分&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> (cnt_t &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> cnt_s)&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>most_common(&lt;span style="color:#f5a97f">1&lt;/span>)[&lt;span style="color:#f5a97f">0&lt;/span>][&lt;span style="color:#f5a97f">0&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來今天我們要講很多程式語言都有的重要的東西：&lt;strong>物件&lt;/strong> 。&lt;br>
我們先前講過函式，就是透過自己組合一些程式碼，&lt;br>
做成自己想要的一組功能。&lt;br>
事實上，以Python的角度來說，任何東西都是一種物件，&lt;br>
物件不只有自己的&lt;strong>函式(方法)&lt;/strong> ，還有一些屬於它的&lt;strong>變數(屬性)&lt;/strong> 。&lt;/p>
&lt;p>舉例來說：&lt;br>
如果有一個人叫阿明，另一個人叫小美，&lt;br>
他們都是同一個高中同一班的學生，&lt;br>
所以要考試時，阿明要考數學跟英文，小美也要考數學跟英文。&lt;br>
如果我們要記錄阿明跟小美的成績的話，按照先前所學的，&lt;br>
讀者可能會做類似如下的變數設定：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>ming_score_math &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">55&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ming_score_english &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">70&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei_score_math &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">90&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei_score_english &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">88&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>這麼做有以下幾個缺點：&lt;/p>
&lt;ol>
&lt;li>字很長XD&lt;/li>
&lt;li>每個變數都要重新再命名一次，如果今天要40個同學都這樣的話，&lt;br>
寫變數命名就累死了！&lt;br>
所以為了加以簡化，我們可以用物件的概念來處理這個問題。&lt;br>
在創造一個&lt;strong>物件(object)之前，我們要先定義類別(class)&lt;/strong> 。&lt;br>
什麼是類別呢？&lt;br>
我們要考慮處理的目標，其共通性是什麼？&lt;br>
比方說阿明是學生，小美也是學生，&lt;br>
阿明會有考試的成績，小美也是，同時，阿明和小美都會上課。&lt;br>
那麼我們就會可以定義一個類別稱為Student&lt;br>
(一般類別習慣會使用第一個字大寫)。&lt;/li>
&lt;/ol>
&lt;p>最基礎的類別定義如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Student&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">pass&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># pass表示暫時不做任何事情，但將來必須要將其填補好。&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果要從一個定義產生物件，其用法如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>ming &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student() &lt;span style="color:#6e738d;font-style:italic"># 阿明是個學生&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student() &lt;span style="color:#6e738d;font-style:italic"># 小美是個學生，但和阿明不一樣&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>上面的ming和mei都是分別都是一個物件，其類別為Student。&lt;br>
以最初始的定義來說，它什麼事情都不會做，接下來我們來加入一些屬性：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Student&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__init__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, name):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> name
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>在一個物件被初始化的時候，最先會呼叫其中的__init__()函式。&lt;br>
它最前面必須要是self開頭，&lt;strong>self的概念是指這個物件本體&lt;/strong> ，&lt;br>
我們可以透過&lt;strong>self.xxx&lt;/strong> 的方式來取得或修改物件的其他屬性或方法。&lt;br>
注意到除了self以外，我們還增加一個name，&lt;br>
代表當我們呼叫Student()時，其第一個位置傳入的將會是name。&lt;br>
而&lt;strong>self.name = name&lt;/strong> 則代表我們要在開始時，&lt;br>
&lt;strong>將從外面傳入進來的name的值，&lt;br>
存放進這個物件本體的name的值。&lt;/strong>&lt;/p>
&lt;p>所以我們現在在來修改一下剛剛產生物件的方式：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>ming &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;阿明&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 阿明是個學生&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;小美&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 小美是個學生，但和阿明不一樣&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 要使用&amp;#39;.&amp;#39;來取得各自的名字&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(ming&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(mei&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>除了屬性以外，我們還可以為類別新增一些方法，&lt;br>
其方式基本和前面函式定義的方法一致，只是要加上self。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#eed49f">Student&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">__init__&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>, name):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> name
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 可以利用self取得自己這個類別裡面的變數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">readMyName&lt;/span>(&lt;span style="color:#91d7e3">self&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;聽清楚了，我的名字是&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">self&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;!!!&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ming &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;阿明&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Student(&lt;span style="color:#a6da95">&amp;#39;小美&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(ming&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(mei&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>name)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ming&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>readMyName()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mei&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>readMyName()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>由於物件概念比較需要仔細釐清，我們就分成兩篇來細講，&lt;br>
請務必仔細完成今天的練習呦！&lt;/p>
&lt;h3 id="那我們來練習一下題目吧">那我們來練習一下題目吧！
&lt;/h3>&lt;ol>
&lt;li>在上述的例子當中，請為類別新增一個字典，名稱為score，&lt;br>
將該字典用來儲存{‘科目’:’分數’}的各科成績，並修改__init__()的函式，&lt;br>
在產生阿明及小美時，同時輸入各科成績，&lt;br>
如未輸入則預設為0分(也就是缺考)。&lt;br>
阿明的成績分別為：數學55/英文70/物理55&lt;br>
小美的成績分別為：數學90/英文88/物理100&lt;/li>
&lt;li>承上題，請新增一名Student，其name為’HowHow’，&lt;br>
數學成績為80，英文成績為60，物理成績為40。&lt;/li>
&lt;li>請為Student新增一個方法，讓兩個Student可以互相比較，&lt;br>
名稱為compare()。&lt;br>
例如A.compare(B)，假設：&lt;br>
A的總分高於B -&amp;gt; A的名字 + ‘贏了！’&lt;br>
A的總分等於B -&amp;gt; ‘什麼？竟然平手？！’&lt;br>
A的總分小於B -&amp;gt; ‘可…可惡，難道，這就是’ + B的名字 + ‘真正的實力嗎？’&lt;/li>
&lt;/ol>
&lt;p>並分別讓阿明和HowHow比較、阿明和小美比較、小美和HowHow比較，&lt;br>
輸出結果。&lt;/p>
&lt;p>辛苦啦！我們明天見！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (11) — 標準程式庫：你的機車不機車，載我瀏覽世界景色</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-11-standard-libraries/</link><pubDate>Sat, 26 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-11-standard-libraries/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (11) — 標準程式庫：你的機車不機車，載我瀏覽世界景色" />&lt;h2 id="day-11-標準程式庫你的機車不機車載我瀏覽世界景色">Day 11 標準程式庫：你的機車不機車，載我瀏覽世界景色
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10243343" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10243343&lt;/a>&lt;/p>
&lt;h3 id="先來解答昨天的問題吧">先來解答昨天的問題吧！
&lt;/h3>&lt;ol>
&lt;li>我們可以使用randint(1, 100)，&lt;br>
或者使用int(1 + random() * 100)來取得亂數值。&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">random&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> randint
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ans, guess &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> randint(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">100&lt;/span>), &lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>l, r &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">while&lt;/span> ans &lt;span style="color:#91d7e3;font-weight:bold">!=&lt;/span> guess:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">try&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> guess &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#91d7e3">input&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">請在&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(l) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;到&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(r) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;之間猜一個數:&amp;#39;&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">except&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 加入continue，直接跳過後面的範圍處理，回到迴圈的開頭&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;請輸入正常的數字，不要加其他字母或符號呦！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">continue&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span> l &lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> r: &lt;span style="color:#6e738d;font-style:italic"># 超出範圍的部分同樣也要跳過(當然，也可以用elif和下面的判斷連起來)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;請輸入正確範圍內的數字！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">continue&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span> ans:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;您猜的數字比答案還要小，請再猜大一點~&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> l &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">elif&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> ans:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;您猜的數字比答案還要大，請再猜小一點~&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> r &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;恭喜你猜出答案啦！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="2">
&lt;li>為了要避開，我們可以先生成一個串列，&lt;br>
範圍為1~100並且去除掉avoid_lt的值。&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">random&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> choice
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>avoid_lt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">14&lt;/span>, &lt;span style="color:#f5a97f">44&lt;/span>, &lt;span style="color:#f5a97f">94&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ans_lt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [i &lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">101&lt;/span>) &lt;span style="color:#c6a0f6">if&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">not&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> avoid_lt] &lt;span style="color:#6e738d;font-style:italic"># 在列表生成式中使用if來處理要跳過的值&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ans, guess &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> choice(ans_lt), &lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>在上一篇我們用了一些匯入的模組及套件以後，&lt;br>
今天我們再花一點時間進一步來介紹Python的標準程式庫！&lt;br>
在Python當中有很多已經做好的函式，只需要匯入就可以使用囉！&lt;br>
在實作一些功能前，有時候不妨先查一下是否有適用的函式可用。&lt;/p>
&lt;p>但有一點很重要的要先提到：&lt;br>
&lt;strong>請不要造一輛車子以後只拿輪子，這會很沒效率。&lt;/strong>&lt;br>
為什麼呢？&lt;br>
因為當我們造一輛車子的時候會耗費大量的時間，&lt;br>
但如果我們只是要一個輪子的話，&lt;br>
我們應該去尋找專門製作輪子的方式，而非造車拔輪。&lt;br>
所以讀者在使用函式的時候，都要盡量去留意當前自己的目標是什麼，&lt;br>
避免耗費過多時間讓Python在不必要的部分計算。&lt;/p>
&lt;p>首先我們來介紹&lt;strong>defaultdict()&lt;/strong> 。&lt;br>
先前我們介紹過字典，假設我們現在有一個字典名為dic，&lt;br>
當我們使用dic[key]時，如果這個key並不在字典裡，&lt;br>
會發生什麼事情呢？&lt;br>
答案是：會產生錯誤！&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dic &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> {}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dic[&lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;&amp;lt;stdin&amp;gt;&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">KeyError&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>為了處理這個問題，我們有幾種方式：&lt;/p>
&lt;ol>
&lt;li>每次檢查&lt;strong>if key in dic&lt;/strong> ，存在的話，再做其他的事情。&lt;/li>
&lt;li>如果我們有一些預設的狀況的話，例如要存放key出現的次數，那可以使用&lt;strong>get()&lt;/strong> 。&lt;br>
get()的第一個參數放入要找的key，第二個位置放入預設的value值，&lt;br>
如果這個key不存在於字典，就使用後面給定的value做為結果；&lt;br>
如果存在的話，當然就用對應到的value。&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dic&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get(&lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol>
&lt;li>defaultdict()&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">collections&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> defaultdict
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> cnt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> defaultdict(&lt;span style="color:#91d7e3">int&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> cnt[&lt;span style="color:#f5a97f">3&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> cnt[&lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> cnt[&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>]&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> cnt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get(&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> cnt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get(&lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>在defaultdict中，當key沒有被指定value時，&lt;br>
就會採用初始化時預設給進去的東西：&lt;br>
寫int代表預設值為0、寫list代表預設為空串列、寫dict表預設為空字典…&lt;br>
以此類推。&lt;br>
省略參數的時候，會被設定為&lt;strong>None&lt;/strong> ，也就是什麼都沒有的意思，&lt;br>
但這麼一來，就又會回到一般字典對於不存在的key會報錯的狀況。&lt;br>
給進去的東西還有其他的用法，有興趣的讀者也可以再深入研究。&lt;/p>
&lt;p>接著我們來看看&lt;strong>Counter()&lt;/strong> 。&lt;br>
顧名思義，Counter()基本上就是用來&lt;strong>計算什麼東西出現幾次&lt;/strong> 用的，&lt;br>
它是屬於collections裡面的一部分，&lt;br>
我們直接來看範例：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">collections&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> Counter
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> scores &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#f5a97f">35&lt;/span>,&lt;span style="color:#f5a97f">70&lt;/span>,&lt;span style="color:#f5a97f">10&lt;/span>,&lt;span style="color:#f5a97f">20&lt;/span>,&lt;span style="color:#f5a97f">35&lt;/span>,&lt;span style="color:#f5a97f">70&lt;/span>,&lt;span style="color:#f5a97f">70&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> score_counter &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> Counter(scores) &lt;span style="color:#6e738d;font-style:italic"># 將list代入，即可產生一個Counter型態的東西&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> score_counter
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Counter({&lt;span style="color:#f5a97f">70&lt;/span>: &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">35&lt;/span>: &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>: &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>: &lt;span style="color:#f5a97f">1&lt;/span>}) &lt;span style="color:#6e738d;font-style:italic"># 為當中的元素計數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> names &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#a6da95">&amp;#39;James&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Michael&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Ted&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;James&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Leo&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> Counter(names) &lt;span style="color:#6e738d;font-style:italic"># str也可以使用&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Counter({&lt;span style="color:#a6da95">&amp;#39;James&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Michael&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Ted&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;Leo&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">1&lt;/span>})
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> score_counter&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>most_common() &lt;span style="color:#6e738d;font-style:italic"># most_common()會按由大到小的出現次數來排序&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[(&lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>), (&lt;span style="color:#f5a97f">35&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>), (&lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>), (&lt;span style="color:#f5a97f">20&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>)]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> score_counter&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>most_common(&lt;span style="color:#f5a97f">2&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 代入的值代表要取幾個數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[(&lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>), (&lt;span style="color:#f5a97f">35&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>)]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>除了範例提到的基本以外，兩個Counter之間可以做加、減，&lt;br>
結果就是將對應的key出現的次數加總及相減。&lt;br>
(相減時小於等於0的部分會去掉)&lt;br>
使用&amp;amp;和|則會像set一樣取得交集和聯集。&lt;/p>
&lt;p>前面包含了dict及defaultdict的部分，&lt;br>
都有一個特點：它&lt;strong>不一定&lt;/strong> 按照原先順序排列。&lt;br>
那麼如果你真的很在意一開始的順序呢？&lt;br>
我們可以使用**OrderedDict()**來處理。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> scores &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> OrderedDict([(&lt;span style="color:#a6da95">&amp;#39;James&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">80&lt;/span>), (&lt;span style="color:#a6da95">&amp;#39;Andy&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">70&lt;/span>), (&lt;span style="color:#a6da95">&amp;#39;Curry&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">100&lt;/span>)]) &lt;span style="color:#6e738d;font-style:italic"># 每組要用tuple處理&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> scores
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>OrderedDict([(&lt;span style="color:#a6da95">&amp;#39;James&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">80&lt;/span>), (&lt;span style="color:#a6da95">&amp;#39;Andy&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">70&lt;/span>), (&lt;span style="color:#a6da95">&amp;#39;Curry&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">100&lt;/span>)]) &lt;span style="color:#6e738d;font-style:italic"># 按進去的順序，取出也會相同&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">for&lt;/span> s &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> scores:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(s)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>James
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Andy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Curry
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>當我們在練習LeetCode寫題目時，&lt;br>
常常會需要使用到stack(堆疊)或queue(佇列)這兩種資料結構，&lt;br>
前者通常使用list即可，後者則一般會使用&lt;strong>deque&lt;/strong> 。&lt;br>
(理論上念做deck，但我都習慣念de-queue)&lt;/p>
&lt;p>&lt;strong>deque&lt;/strong> 是一個雙向的序列，&lt;br>
可以從開頭或結尾傳入或取出資料。&lt;br>
我們直接來看範例：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">collections&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> deque
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> s &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;abcde&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> deque(s) &lt;span style="color:#6e738d;font-style:italic"># 直接將字換成deque&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>deque([&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;e&amp;#39;&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> deque(s)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> scores
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>popleft() &lt;span style="color:#6e738d;font-style:italic"># 從左邊取出&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>popleft()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>pop() &lt;span style="color:#6e738d;font-style:italic"># 從右邊取出&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;e&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>append(&lt;span style="color:#a6da95">&amp;#39;XDFES&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>deque([&lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;XDFES&amp;#39;&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>appendleft(&lt;span style="color:#a6da95">&amp;#39;YES&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>deque([&lt;span style="color:#a6da95">&amp;#39;YES&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;XDFES&amp;#39;&lt;/span>])
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>由於從右邊處理才是一般常見狀態，&lt;br>
所以無論是append或pop，&lt;br>
在往左時都會加上一個left，&lt;br>
藉以區分兩者差別。&lt;/p>
&lt;p>如果對於資料結構、演算法、LeetCode有興趣的話，&lt;br>
也歡迎看看去年的鐵人賽發文，或者查筆者的Medium系列文章!&lt;/p>
&lt;p>以上只不過是Python內建函式庫的冰山一角而已XD&lt;br>
有興趣的讀者，可以再自己找看看有什麼你需要的東西~&lt;/p>
&lt;h3 id="那我們來練習一下題目吧">那我們來練習一下題目吧！
&lt;/h3>&lt;ol>
&lt;li>給定兩個字串s跟t，已經知道t的組成，&lt;br>
是將s的字母打亂以後進行重組，再隨機加上一個字母。&lt;br>
請用前面所學，找出被加上的那個字母。&lt;/li>
&lt;/ol>
&lt;p>辛苦啦！我們明天見！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (10) — 模組與套件：借一段往日旋律，宛轉悠揚</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-10-modules-and-packages/</link><pubDate>Fri, 25 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-10-modules-and-packages/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (10) — 模組與套件：借一段往日旋律，宛轉悠揚" />&lt;h2 id="day-10-模組與套件借一段往日旋律宛轉悠揚">Day 10 模組與套件：借一段往日旋律，宛轉悠揚
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10242602" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10242602&lt;/a>&lt;/p>
&lt;h3 id="先來解答昨天的問題吧">先來解答昨天的問題吧！
&lt;/h3>&lt;ol>
&lt;li>假定有一個樓梯，你從第0階要爬到第n階，&lt;br>
每次你只能選擇爬1階或者爬2階，這樣稱做一步。&lt;br>
請寫出一個函式名為&lt;strong>cs&lt;/strong> ，給定n的値以後(n &amp;gt; 0)，&lt;br>
計算出從第0階爬到第n階的方法共有幾種不同的變化？&lt;/li>
&lt;/ol>
&lt;p>上一篇提到了遞迴的關鍵點，首要在於將目標不斷簡化，&lt;br>
那麼我們該怎麼思考這題的簡化呢？&lt;br>
想想看，爬到第n階之前，應該要先爬到哪一階呢？&lt;br>
應該是n-1或n-2階吧？因為一次只能走一步和走兩步。&lt;br>
也就是說，假設我們知道cs(n-1)跟cs(n-2)，&lt;br>
我們就能知道cs(n)，因為它們兩個狀況只要分別走1步或2步，&lt;br>
就可以到達第n階，&lt;br>
而且cs(n-1)跟cs(n-2)彼此之間並沒有重複的走法。&lt;br>
所以cs(n) = cs(n-1) + cs(n-2)，&lt;br>
接下來的問題是，在什麼狀況下該停下來？&lt;br>
顯然，在n = 1及n = 2時，&lt;br>
cs(1)和cs(2)的值已經確定是1跟2了，&lt;br>
所以我們每次在遞迴時，只要碰到n=1或n=2時，就應該回傳n的值即可。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">cs&lt;/span>(n):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> n &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span> n &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> n &lt;span style="color:#6e738d;font-style:italic"># 請留意一件事情，函式在使用return回傳以後，不論它當下是否處在迴圏或者是否往下還有東西未完成，都會直接離開函式並回傳值歐！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> cs(n&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> cs(n&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 測試計算從cs(1)到cs(100)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">101&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(cs(i))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>這麼做其實有一個缺點：&lt;br>
比方說我們算cs(10)的時候，會拆分成cs(9)跟cs(8)，&lt;br>
而接下來會是：&lt;br>
cs(9) -&amp;gt; cs(8) + cs(7) -&amp;gt; cs(7) + cs(6) + cs(6) + cs(5) -&amp;gt; …&lt;br>
cs(8) -&amp;gt; cs(7) + cs(6) -&amp;gt; cs(6) + cs(5) + cs(5) + cs(4) -&amp;gt; …&lt;br>
在化簡的過程中，因為Python並不知道我們有重複的東西，&lt;br>
所以它並不會主動去幫我們把相同的cs(x)給結合在一起，&lt;br>
所以最終就會相當耗時。&lt;br>
(讀者可以執行)&lt;/p>
&lt;p>那該怎麼改善呢？&lt;br>
這裡提供兩個方法。&lt;br>
&lt;strong>方法一：將用過的答案先記下來(可以使用list或dict)&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">cs&lt;/span>(n, dic):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># n在裡面就直接回傳(因為已經算過了!)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> n &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> dic:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> dic[n]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 先將n的結果算完再回傳，別忘了放到字典裡！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> dic[n] &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> cs(n&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, dic) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> cs(n&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>, dic)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> dic[n]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>dic &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> {&lt;span style="color:#f5a97f">1&lt;/span> : &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span> : &lt;span style="color:#f5a97f">2&lt;/span>} &lt;span style="color:#6e738d;font-style:italic"># 預設cs(1), cs(2)的結果&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">101&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(cs(i, dic))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>方法二：lru_cache&lt;/strong>&lt;br>
lru_cahce是一個工具，&lt;br>
它可以記住函式已經計算過的內容，並存放起來。&lt;br>
在maxsize=None的時候，我們就不會限制它最多可以記幾個，&lt;br>
因此利用這個性質，它會幫我們自主處理重複計算的部分。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">functools&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8aadf4;font-weight:bold">@functools.lru_cache&lt;/span>(maxsize&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">None&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 用@開頭的稱為裝飾器，有興趣的讀者可再深入了解。&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">cs&lt;/span>(n):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> n &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span> n &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> n
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> cs(n&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> cs(n&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">101&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(cs(i))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>那麼該如何做出迭代解呢？&lt;br>
由於cs(n)只跟cs(n-1)和cs(n-2)有關，&lt;br>
我們完全可以從cs(3)開始，一路往上加到結束。&lt;br>
1+2=3, 2+3=5, 3+5=8, …以此類推。&lt;br>
當我們要算cs(n)時，表示我們需要經過n-2次的計算，&lt;br>
因此，我們只要利用兩個變數反覆交替並取代，&lt;br>
最終即可得到答案。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">cs&lt;/span>(n):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> n &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span> n &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>: &lt;span style="color:#c6a0f6">return&lt;/span> n
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> s1, s2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(n &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># Python的賦值是會一起看開始前的值來計算&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 所以不會因為s1的值變s2了, s2新的值就變成s2+s2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> s1, s2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> s2, s1 &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> s2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> s2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">101&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(cs(i))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>註：&lt;strong>請留意當我們在使用字典或list時，其做為參數時是整包一起給，&lt;/strong>&lt;br>
&lt;strong>但當傳一般的int時，傳入的值則當成另一個本地端的變數看待。&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>r &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">33&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">t1&lt;/span>(r):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(r)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> r &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(r) &lt;span style="color:#6e738d;font-style:italic"># 改完變2&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">t2&lt;/span>(lt):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(lt)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> lt[&lt;span style="color:#f5a97f">0&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(lt)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;t1&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>t1(r)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(r) &lt;span style="color:#6e738d;font-style:italic"># 改完以後外面r的值還是33&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">t2&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#f5a97f">555&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>t2(lt)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(lt) &lt;span style="color:#6e738d;font-style:italic"># 改完後lt內的值已經成為100了!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>t1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">33&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">33&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>t2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">555&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">100&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">100&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>今天我們講點比較輕鬆的東西：模組和套件&lt;br>
如同前面我們所提過的，因為重複做相同的事情太麻煩了，&lt;br>
所以使用函式來將要重複做的事情寫在一起，可以反復呼叫。&lt;br>
那麼，如果你知道有些你需要做的事情，&lt;br>
已經有別人寫過了，用現成的當然會比自己寫還要快很多囉！&lt;/p>
&lt;p>我們前面已經用過幾次import(匯入)了，&lt;br>
它的根本其實就是從你自己寫的程式，或者別人寫的程式(或函式庫)，&lt;br>
把前人的智慧來個拾人牙慧一下XD!&lt;br>
import的寫法大體有如下的變化：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">module&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 直接將整個檔案納入(不用加.py)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">module&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> function &lt;span style="color:#6e738d;font-style:italic"># 只匯入function的部分&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">module&lt;/span> &lt;span style="color:#c6a0f6">as&lt;/span> &lt;span style="color:#f5a97f">xx&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># xx是自己選的名字，用來在這個程式中全程替代原先的module名&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">module&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> function &lt;span style="color:#c6a0f6">as&lt;/span> oo &lt;span style="color:#6e738d;font-style:italic"># 這時候用oo就相當於跟function一樣&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>舉例來說，在Python中有一個內建模組叫random，random中的random()，&lt;br>
可以隨機生成一個0~1之間的小數亂數(包含0但不包含1)，&lt;br>
我們可以先import random，再呼叫random的random()函式來得到亂數；&lt;br>
或者，我們可以從random中取得random()函式，同時將其取一個別名。&lt;br>
(要為模組取別名也行，取別名的好處是可以比較簡短，且可以避免碰到名稱衝突的問題)&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">random&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> random&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>random()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">0.8076966930768202&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">random&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> random &lt;span style="color:#c6a0f6">as&lt;/span> rd
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> rd()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">0.23723453093568025&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果是Python內建的模組，那麼不論你的主要的程式.py檔放在哪都沒問題；&lt;br>
但如果你想要匯入的是別的檔案，那麼要將這些檔案放在&lt;strong>同一個目錄&lt;/strong> 下，&lt;br>
才能夠正常匯入。&lt;/p>
&lt;p>如果我們要更嚴謹一點的話，就要使用&lt;strong>套件&lt;/strong> 的形式。&lt;br>
假設我們有一批寫好的檔案，他們都是這個主程式可能會用到的工具，&lt;br>
我們可能會開一個名為utils(工具箱)的資料夾，&lt;br>
裝入所有的檔案，比方說假設有check.py, schedule.py這兩個檔案。&lt;br>
除此以外，還要裝入一個至少是空白的檔案，必須取名為__init__.py。&lt;br>
(前後都有兩個底線)&lt;/p>
&lt;p>所以我們的資料夾結構會變成這樣：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">|&lt;/span> &lt;span style="color:#ed8796">—&lt;/span> fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">|&lt;/span> &lt;span style="color:#ed8796">—&lt;/span> utils
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3;font-weight:bold">|&lt;/span> &lt;span style="color:#ed8796">—&lt;/span> &lt;span style="color:#8aadf4">__init__&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3;font-weight:bold">|&lt;/span> &lt;span style="color:#ed8796">—&lt;/span> check&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3;font-weight:bold">|&lt;/span> &lt;span style="color:#ed8796">—&lt;/span> schedule&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>那我們來示範一下運作的模式：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># fromzero.py&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">utils&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> check, schedule &lt;span style="color:#6e738d;font-style:italic"># 透過套件的模式來匯入&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#34;Check a lucky number: &amp;#34;&lt;/span>, check&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>getLucky())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#34;Check daily routine: &amp;#34;&lt;/span>, schedule&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>get())
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># utils/check.py&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">getLucky&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#8bd5ca">from&lt;/span> &lt;span style="color:#f5a97f">random&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> random
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(random() &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">7&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 取1~7之間的亂數&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># utils/schedule.py&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">get&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> &lt;span style="color:#a6da95">&amp;#34;You have a meeting today!&amp;#34;&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 就只是回傳一段str而已&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="那我們一樣來練習題目吧">那我們一樣來練習題目吧！
&lt;/h3>&lt;ol>
&lt;li>上次我們的猜數字遊戲本來是固定的數字，&lt;br>
已知現在可以使用從random模組中的函式取得亂數法，&lt;br>
(詳見Python Document &lt;a class="link" href="https://docs.python.org/3/library/random.html%29" target="_blank" rel="noopener"
>https://docs.python.org/3/library/random.html)&lt;/a>&lt;br>
請利用random.randint(a,b)或random.random()，&lt;br>
將前面的題目中要猜的數字改成隨機的1~100(含)之間的整數。&lt;/li>
&lt;li>承上題，1~100當中有一些數假設有我們想避開，&lt;br>
不想被成為要猜的數字的話，&lt;br>
若給定該串列avoid_lt = [4, 14, 44, 94]，&lt;br>
請參照上面的說明，使用random.choice(seq)來處理。&lt;br>
(random.choice()方法可以從一個序列型態的東西seq中隨機取出一個值)&lt;br>
(序列是有順序的元素的集合統稱，比如list, tuple, range)&lt;br>
提示：可以先新增一個數列並去處掉不要的元素再做random.choice()&lt;/li>
&lt;/ol>
&lt;p>辛苦啦！我們明天見！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (9) — 例外處理、遞迴：誰用三生浮世的煙火，換你一次長憶的交錯</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-9-exception-handling-recursion/</link><pubDate>Thu, 24 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-9-exception-handling-recursion/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (9) — 例外處理、遞迴：誰用三生浮世的煙火，換你一次長憶的交錯" />&lt;h2 id="day-09-例外處理遞迴誰用三生浮世的煙火換你一次長憶的交錯">Day 09 例外處理、遞迴：誰用三生浮世的煙火，換你一次長憶的交錯
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10242043" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10242043&lt;/a>&lt;/p>
&lt;h3 id="先來解答昨天的問題吧">先來解答昨天的問題吧！
&lt;/h3>&lt;ol>
&lt;li>為了表現出串列表達式的用法，&lt;br>
這邊我們就先不將range的部分和取偶數合併，&lt;br>
不然使用range(2, 11, 2)就行了。&lt;br>
連同2的寫法如下：&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>lt1 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> []
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">11&lt;/span>): &lt;span style="color:#6e738d;font-style:italic"># 記得每層都是用縮排表示&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> j &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">11&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> j &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> lt1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>append(i &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> j)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(lt1)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lt2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [i &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> j &lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">11&lt;/span>) &lt;span style="color:#c6a0f6">if&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span> &lt;span style="color:#c6a0f6">for&lt;/span> j &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">11&lt;/span>) &lt;span style="color:#c6a0f6">if&lt;/span> j &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 我們可以用不只一層的for來處理列表生成式&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(lt2)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>執行結果參考如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">12&lt;/span>, &lt;span style="color:#f5a97f">16&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">16&lt;/span>, &lt;span style="color:#f5a97f">24&lt;/span>, &lt;span style="color:#f5a97f">32&lt;/span>, &lt;span style="color:#f5a97f">40&lt;/span>, &lt;span style="color:#f5a97f">12&lt;/span>, &lt;span style="color:#f5a97f">24&lt;/span>, &lt;span style="color:#f5a97f">36&lt;/span>, &lt;span style="color:#f5a97f">48&lt;/span>, &lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#f5a97f">16&lt;/span>, &lt;span style="color:#f5a97f">32&lt;/span>, &lt;span style="color:#f5a97f">48&lt;/span>, &lt;span style="color:#f5a97f">64&lt;/span>, &lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>, &lt;span style="color:#f5a97f">40&lt;/span>, &lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#f5a97f">100&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">12&lt;/span>, &lt;span style="color:#f5a97f">16&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">16&lt;/span>, &lt;span style="color:#f5a97f">24&lt;/span>, &lt;span style="color:#f5a97f">32&lt;/span>, &lt;span style="color:#f5a97f">40&lt;/span>, &lt;span style="color:#f5a97f">12&lt;/span>, &lt;span style="color:#f5a97f">24&lt;/span>, &lt;span style="color:#f5a97f">36&lt;/span>, &lt;span style="color:#f5a97f">48&lt;/span>, &lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#f5a97f">16&lt;/span>, &lt;span style="color:#f5a97f">32&lt;/span>, &lt;span style="color:#f5a97f">48&lt;/span>, &lt;span style="color:#f5a97f">64&lt;/span>, &lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#f5a97f">20&lt;/span>, &lt;span style="color:#f5a97f">40&lt;/span>, &lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#f5a97f">80&lt;/span>, &lt;span style="color:#f5a97f">100&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol>
&lt;li>以現有給出來的內容，我們可以寫成類似以下的小遊戲：&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>ans, guess &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">37&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>l, r &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">while&lt;/span> ans &lt;span style="color:#91d7e3;font-weight:bold">!=&lt;/span> guess: &lt;span style="color:#6e738d;font-style:italic"># 猜對就離開，猜錯則繼續&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> guess &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#91d7e3">input&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;請在&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(l) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;到&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(r) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;之間猜一個數:&amp;#39;&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span> ans:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;您猜的數字比答案還要小，請再猜大一點~&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> l &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 範圍會被限縮到比剛剛猜的數字還要大做為左邊界&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">elif&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> ans:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;您猜的數字比答案還要大，請再猜小一點~&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> r &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;恭喜你猜出答案啦！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>請留意，這只是按照我們現在已經學到的部分來撰寫的，&lt;br>
以這個解法來說的話就包含了以下幾個明顯的bug&lt;br>
(程式臭蟲，指程式碼中有一些問題導致運行會當掉或是輸出結果有問題，&lt;br>
可能是輸入錯誤，也有可能是程式的邏輯本身出的問題)：&lt;/p>
&lt;ol>
&lt;li>輸入非數字的時候會因為無法轉換成整數而使程式當掉。&lt;/li>
&lt;li>輸入數字可以限縮範圍，但我們並沒有真的限制使用者只能輸入這個範圍內的數字。&lt;br>
請參照執行結果，應該能理解上面兩點所造成的問題。&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>請在1到100之間猜一個數:&lt;span style="color:#f5a97f">90&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>您猜的數字比答案還要大&lt;span style="color:#ed8796">，&lt;/span>請再猜小一點&lt;span style="color:#91d7e3;font-weight:bold">~&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>請在1到89之間猜一個數:&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>您猜的數字比答案還要小&lt;span style="color:#ed8796">，&lt;/span>請再猜大一點&lt;span style="color:#91d7e3;font-weight:bold">~&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>請在11到89之間猜一個數:&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>您猜的數字比答案還要小&lt;span style="color:#ed8796">，&lt;/span>請再猜大一點&lt;span style="color:#91d7e3;font-weight:bold">~&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>請在&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">4&lt;/span>到89之間猜一個數:&lt;span style="color:#f5a97f">88&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>您猜的數字比答案還要大&lt;span style="color:#ed8796">，&lt;/span>請再猜小一點&lt;span style="color:#91d7e3;font-weight:bold">~&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>請在&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">4&lt;/span>到87之間猜一個數:&lt;span style="color:#f5a97f">34&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>您猜的數字比答案還要小&lt;span style="color:#ed8796">，&lt;/span>請再猜大一點&lt;span style="color:#91d7e3;font-weight:bold">~&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>請在35到87之間猜一個數:&lt;span style="color:#f5a97f">37&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>恭喜你猜出答案啦&lt;span style="color:#ed8796">！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>請在1到100之間猜一個數:&lt;span style="color:#f5a97f">67&lt;/span>u
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;fromzero.py&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> guess &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#91d7e3">input&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;請在&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(l) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;到&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(r) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;之間猜一個數:&amp;#39;&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">ValueError&lt;/span>: invalid literal &lt;span style="color:#c6a0f6">for&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>() &lt;span style="color:#c6a0f6">with&lt;/span> base &lt;span style="color:#f5a97f">10&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;67u&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>請在1到100之間猜一個數:st
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;fromzero.py&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> guess &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#91d7e3">input&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;請在&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(l) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;到&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(r) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;之間猜一個數:&amp;#39;&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">ValueError&lt;/span>: invalid literal &lt;span style="color:#c6a0f6">for&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>() &lt;span style="color:#c6a0f6">with&lt;/span> base &lt;span style="color:#f5a97f">10&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;st&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來我們來講今天的第一個主題：&lt;br>
如昨天的第三題來說，我們會發現使用者永遠可以超乎你的想像。&lt;br>
這時候你希望得到可以轉成1~100的字串，並且能夠處理掉輸入錯誤的問題的話，&lt;br>
該怎麼辦呢？&lt;/p>
&lt;p>如果你能將使用者輸入的每一種內容都分門別類，&lt;br>
當然可以用if…elif…else的形式來進行解決，&lt;br>
如果沒有想要分那麼精細呢？&lt;br>
我們可以使用Python的錯誤處理機制try…except…。&lt;br>
基本語法如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">try&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 有可能發生例外的程式碼
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">except&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 發生例外時&lt;span style="color:#ed8796">，&lt;/span>執行這個區塊的程式碼處理
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>讓我們改一下前面的程式碼看看：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>ans, guess &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">37&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>l, r &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">while&lt;/span> ans &lt;span style="color:#91d7e3;font-weight:bold">!=&lt;/span> guess:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">try&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> guess &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#91d7e3">input&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">請在&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(l) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;到&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(r) &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#a6da95">&amp;#39;之間猜一個數:&amp;#39;&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">except&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 加入continue，直接跳過後面的範圍處理，回到迴圈的開頭&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;請輸入正常的數字，不要加其他字母或符號呦！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">continue&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span> l &lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> r: &lt;span style="color:#6e738d;font-style:italic"># 超出範圍的部分同樣也要跳過(當然，也可以用elif和下面的判斷連起來)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;請輸入正確範圍內的數字！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">continue&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span> ans:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;您猜的數字比答案還要小，請再猜大一點~&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> l &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">elif&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span> ans:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;您猜的數字比答案還要大，請再猜小一點~&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> r &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> guess &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;恭喜你猜出答案啦！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>在上面的程式中，當我們用try包住input那行以後，&lt;br>
一旦我們輸入了不是數字的東西，原本Python會報錯並結束程式，&lt;br>
此時就會改成來到except處來執行對應的程式碼。&lt;br>
(如果沒輸入錯誤，except的部分就會被忽略)&lt;/p>
&lt;p>事實上，不同的例外在Python當中會有不同的錯誤類型，&lt;br>
如果你想要分開精細地處理不同類型的例外的話，&lt;br>
就要寫成如下型式：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">try&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 有可能發生例外的程式碼
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">except&lt;/span> 例外1 &lt;span style="color:#c6a0f6">as&lt;/span> 命名1:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 處理例外1的種類所造成的例外的程式碼(發生什麼事情可以從命名1的變數印出)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">except&lt;/span> 例外2 &lt;span style="color:#c6a0f6">as&lt;/span> 命名2:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">except&lt;/span> 例外3 &lt;span style="color:#c6a0f6">as&lt;/span> 命名3:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>當一個例外發生時會依序由上到下檢查符合哪一個種類的例外，&lt;br>
先滿足條件的獨佔(可以想成類似if…elif的檢查方式)&lt;br>
例外的類別有像是UppercaseException, IndexError, ValueError等等，&lt;br>
他們的共同的大類別都是Exception。&lt;/p>
&lt;p>你也可以使用raise Exception(傳入值)來主動將例外丟出。&lt;br>
(如果你有做好處理的準備的話)&lt;br>
同時，它可以帶著給定的訊息，有助於我們判斷到底是怎麼一回事。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">try&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#c6a0f6">raise&lt;/span> &lt;span style="color:#f5a97f">Exception&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;讚讚&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#c6a0f6">except&lt;/span> &lt;span style="color:#f5a97f">Exception&lt;/span> &lt;span style="color:#c6a0f6">as&lt;/span> exc:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(exc)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>讚讚
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來我們要來講一個日後各位一定碰得到也很常用的方法：&lt;strong>遞迴(Recursion)&lt;/strong> 。&lt;br>
什麼是遞迴呢？&lt;br>
&lt;strong>遞迴就是當一個函式在使用時，中途不斷呼叫自己，&lt;br>
藉以達到某些目的或完成某些問題。&lt;/strong>&lt;br>
通常狀況下，&lt;br>
寫得正常的遞迴應該會不斷在過程中將要計算的問題進行簡化，&lt;br>
最終只剩下我們要的東西，同時沒有再繼續呼叫函式。&lt;br>
聽起來……超級無敵抽象的阿！！！&lt;br>
沒關係，讓我們看看實際的範例。&lt;br>
還記得那個白目的小男孩高斯嗎？&lt;br>
假設我們不會公式，希望使用Python來幫我們手算1~100，&lt;br>
按現有前面學過的東西，你可能會這樣寫：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 別命名成sum()，它是Python已經有的東西，可以用來計算一個串列的所有值加總&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 預設算到100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">cal&lt;/span>(end&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">100&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> res &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># res意思是result, 你要命名成ans也可以，看自己習慣&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>, end &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>): &lt;span style="color:#6e738d;font-style:italic"># range的範圍記得是頭算尾不算，所以要加1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> res &lt;span style="color:#91d7e3;font-weight:bold">+=&lt;/span> i
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> res
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(cal())
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果你不會range的話可能就真的要一個一個加了！&lt;br>
那麼，從遞迴的角度是怎麼看待這件事情的呢？&lt;br>
答案是&lt;strong>一個一個處理&lt;/strong> 。&lt;br>
既然cal(100)是1加到100，那麼cal(99)就是1加到99；&lt;br>
因此，cal(100)就相當於100加上cal(99)囉！&lt;br>
以此類推，我們可以得到cal(end)會等於end + cal(end — 1)。&lt;/p>
&lt;p>於是，我們可以將函式按照這個概念重寫成下面的樣子：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 好像哪裡怪怪的？&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">cal&lt;/span>(end):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> end &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> cal(end &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>有沒有覺得哪邊怪怪的？&lt;br>
我們忘記一件事情，就是當碰到cal(1)的時候，&lt;br>
它本身應該要直接等於1才對，&lt;br>
不然按照這樣呼叫下去，cal輸入的值會變成&lt;strong>0, -1, -2, -3, …&lt;/strong> ，&lt;br>
但不會停下來XD！&lt;br>
那我們再改寫一下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">cal&lt;/span>(end):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> end &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> cal(end &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>) &lt;span style="color:#c6a0f6">if&lt;/span> end &lt;span style="color:#91d7e3;font-weight:bold">!=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span> &lt;span style="color:#c6a0f6">else&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>說明一下，上面的式子前面還沒有講過，但應該不難理解，&lt;br>
這是屬於Python的三元運算子，使用if跟else，&lt;br>
也就是說，&lt;strong>當end != 1時，這行會回傳前面那段”end + cal(end — 1)”&lt;/strong> ，&lt;br>
&lt;strong>否則，就回傳1&lt;/strong> (也就是當end為1時，直接回傳1就對了！)。&lt;/p>
&lt;p>實際在呼叫函式的時候，例如將100代入，&lt;br>
我們會先呼叫cal(100)，發現cal(100)要算100+cal(99)；&lt;br>
Python會將100先記錄下來，先去算cal(99)，&lt;br>
也就是等算出cal(99)後，再回過頭來加上100；&lt;br>
cal(99)又會被拆成99+cal(98)，以此類推。&lt;/p>
&lt;p>由於函式執行時實際上需要記憶體空間，這種還沒得到結果的函式，&lt;br>
往下又呼叫了東西的話，就會再疊上下一段的函式，&lt;br>
也就是在電腦的記憶體中會有地方放&lt;strong>cal(100), cal(99), cal(98)…&lt;/strong> ，&lt;br>
一路堆疊上去，這樣子的結構被我們稱之為&lt;strong>呼叫堆疊(call stack)&lt;/strong> 。&lt;/p>
&lt;p>所以假設一個函式還沒完成，&lt;br>
就又在裡面呼叫另一個函式(可能是自己或別人)的話，&lt;br>
call stack就會越疊越高，從而占用大量記憶體。&lt;/p>
&lt;p>因此，一般來說程式語言都會限制call stack最大的堆疊的函式數量，&lt;br>
以Python來說，可以用以下的方式來檢查call stack的限制：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#8bd5ca">import&lt;/span> &lt;span style="color:#f5a97f">sys&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># import我們會在後面進行介紹&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(sys&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>getrecursionlimit())
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1000&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>所以如果我們將剛剛的cal改成1000的話，這個程式就廢了XD!&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;fromzero.py&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(cal(&lt;span style="color:#f5a97f">1000&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;fromzero.py&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> cal
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> end &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> cal(end &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>) &lt;span style="color:#c6a0f6">if&lt;/span> end &lt;span style="color:#91d7e3;font-weight:bold">!=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span> &lt;span style="color:#c6a0f6">else&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;fromzero.py&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> cal
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> end &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> cal(end &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>) &lt;span style="color:#c6a0f6">if&lt;/span> end &lt;span style="color:#91d7e3;font-weight:bold">!=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span> &lt;span style="color:#c6a0f6">else&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;fromzero.py&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> cal
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> end &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> cal(end &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>) &lt;span style="color:#c6a0f6">if&lt;/span> end &lt;span style="color:#91d7e3;font-weight:bold">!=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span> &lt;span style="color:#c6a0f6">else&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> [Previous line repeated &lt;span style="color:#f5a97f">996&lt;/span> more times]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">RecursionError&lt;/span>: maximum recursion depth exceeded &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> comparison
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我們總結一下建立一個遞迴函式的條件：&lt;/p>
&lt;ol>
&lt;li>我們可以將一個要計算的東西&lt;strong>拆小&lt;/strong> ，不管是拆成&lt;strong>一部分已知一部分未知&lt;/strong> ，&lt;br>
或是拆成&lt;strong>數塊比較小的部分&lt;/strong> 都可以。&lt;/li>
&lt;li>在越拆分越小的時候，&lt;strong>要至少有一個狀態是可以直接得到結果的&lt;/strong> (比如剛剛的cal(1)=1)，&lt;br>
因而，&lt;strong>讓所有的區塊最後都能變成已知，從而可以計算出結果&lt;/strong> 。&lt;/li>
&lt;/ol>
&lt;p>讀者可能會有一些疑惑：&lt;br>
看起來遞迴好像就簡單一點，但是沒有迴圏快阿！&lt;br>
而且迴圏也不會有限制call stack的層數的問題，為什麼不用迴圏呢？&lt;/p>
&lt;p>好問題！&lt;br>
我們現在示範的只是很簡單的範例，&lt;br>
事實上在絕大多數狀況下，可以用遞迴的問題，用迴圏也寫得出來，&lt;br>
這邊通常會稱使用迴圏寫出來的解法為迭代解(iterative solution)。&lt;/p>
&lt;p>問題是……&lt;br>
&lt;strong>越難的題目，通常遞迴解就會很常比迭代解還要容易思考，&lt;/strong>&lt;br>
而迭代解有時候會需要用到比較複雜的推導，才能夠寫出來！&lt;/p>
&lt;p>所以如果未來讀者在學了Python以後，&lt;br>
可能還學了一些別的進階的應用，當面試的時候被考到白板題，&lt;br>
在沒有特別的狀況下，請盡量先確定給出自己遞迴解，&lt;br>
有信心的話，再更進一步去嘗試迭代解，會比較穩妥。&lt;/p>
&lt;p>補充：&lt;br>
感謝FB &lt;strong>程式人雜誌&lt;/strong> 社團的網友** Cheng-En Chuang**留言補充如下，&lt;br>
想更深入了解遞迴的運作的話，請參考他的解說及提供的參考資料：&lt;br>
「有點雞蛋裡挑骨頭，&lt;br>
但遞迴在Python裡面有深度限制是因為沒做tail-call optimization。&lt;br>
在其他有做tail-call optimization的語言裡面就不會有深度限制，&lt;br>
另外在某些語言裡面recursion也不一定比iteration慢。&lt;br>
甚至在Python裡面也可以用decorator達到tail-call效果：&lt;br>
&lt;a class="link" href="https://towardsdatascience.com/python-stack-frames-and-tail-call-optimization-4d0ea55b0542" target="_blank" rel="noopener"
>https://towardsdatascience.com/python-stack-frames-and-tail-call-optimization-4d0ea55b0542&lt;/a>」&lt;/p>
&lt;h3 id="那我們一樣來練習題目吧">那我們一樣來練習題目吧！
&lt;/h3>&lt;ol>
&lt;li>假定有一個樓梯，你從第0階要爬到第n階，&lt;br>
每次你只能選擇爬1階或者爬2階，這樣稱做一步。&lt;br>
請寫出一個函式名為cs，給定n的値以後(n &amp;gt; 0)，&lt;br>
計算出從第0階爬到第n階的方法共有幾種不同的變化？&lt;br>
例：&lt;br>
cs(1) = 1 (1)&lt;br>
cs(2) = 2 (1+1, 2)&lt;br>
cs(3) = 3 (1+2, 2+1, 1+1+1)&lt;br>
cs(4) = 5 (1+1+2, 2+2, 1+2+1, 2+1+1, 1+1+1+1)&lt;br>
請分別給出遞迴解和迭代解。&lt;/li>
&lt;/ol>
&lt;p>對初學者來說，可能不是那麼容意思考，請務必好好觀察函式之間的關係。&lt;/p>
&lt;p>辛苦啦！我們明天見！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (8) — 程式結構與流程語法：如果對手太弱太簡單，那不是很爽嗎?(下)</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-8-programming-structure-flow-control-2/</link><pubDate>Wed, 23 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-8-programming-structure-flow-control-2/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (8) — 程式結構與流程語法：如果對手太弱太簡單，那不是很爽嗎?(下)" />&lt;h2 id="day-08-程式結構與流程語法如果對手太弱太簡單那不是很爽嗎下">Day 08 程式結構與流程語法：如果對手太弱太簡單，那不是很爽嗎?(下)
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10241349" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10241349&lt;/a>&lt;/p>
&lt;p>在上一篇文章中我們講了if…elif…else, while, for, 以及range，&lt;br>
我們也提到了像range()這樣子的方法，是用來生成一個可迭代的Python物件。&lt;br>
而只要可迭代的話，我們通常就可以將其轉成一個list，如上一篇文章那樣。&lt;br>
不管是if, while, for等，都可以使用多層的架構，&lt;br>
對於while跟for來說，其處理方式也是類似多層if的概念，&lt;br>
同時外層內層的東西不同也是可以的。&lt;br>
例如：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">while&lt;/span> xxx:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ooo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> rrr
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">while&lt;/span> yyy:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> uuu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> vvv
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> www
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>這個雙重迴圏，執行的順序應該是：&lt;br>
&lt;strong>xxx成立時，進入迴圏-&amp;gt;ooo-&amp;gt;rrr-&amp;gt;&lt;br>
yyy成立時，進入迴圏-&amp;gt;uuu-&amp;gt;vvv-&amp;gt;&lt;br>
內層迴圏完成一次，重新檢查yyy，若成立則繼續運行，&lt;br>
否則就會執行完www後，回到xxx檢查。&lt;br>
(所以說內層的執行完，才會輪到外層)&lt;/strong>&lt;/p>
&lt;p>今天我們要介紹一個在Python中很好用且常用的東西，&lt;br>
它也用到了for…in…的方法，名字叫做&lt;strong>list comprehension&lt;/strong> ，&lt;br>
可以用來快速簡單地生成list，&lt;br>
中文目前沒有統一的叫法，&lt;br>
可以叫成&lt;strong>串列生成式/串列表達式/串列解析式&lt;/strong> 都行。&lt;br>
其基本形式像這樣：&lt;br>
&lt;code>[算式 for 單項 in 迭代項目]&lt;/code>&lt;/p>
&lt;p>舉例來說，假設我們要一個從0~9的串列，我們可以這樣寫：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">list&lt;/span>(&lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">9&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">6&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> [i &lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">9&lt;/span>)]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">6&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>串列生成式的意義在於每次從迭代的項目當中取出一個單項，&lt;br>
接下來將這個單項透過算式進行加工處理，才放到list當中。&lt;br>
所以除了基本的方法以外，我們也可以用if條件式來進行過濾，只要在後面加上if條件式即可。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> [&lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> i &lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">9&lt;/span>) &lt;span style="color:#c6a0f6">if&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 取0~8當中能整除2的數，每個都先乘以2再加到list&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">12&lt;/span>, &lt;span style="color:#f5a97f">16&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>另一方面，我們也可以利用多重的for in來製造出雙層的list，&lt;br>
或者組合性質的東西。&lt;br>
我們前面提到過list裡面的element也可以是list，&lt;br>
如果我們今天要表達一組4 * 3的格子，格子裡面一開始只放零的話，&lt;br>
可以寫成：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> [[&lt;span style="color:#f5a97f">0&lt;/span> &lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">3&lt;/span>)] &lt;span style="color:#c6a0f6">for&lt;/span> j &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">4&lt;/span>)] &lt;span style="color:#6e738d;font-style:italic"># 一層一層看就會理解等於[0, 0, 0]重複4次&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[[&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>], [&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>], [&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>], [&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>]]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果我想要把所有的座標(從(0, 0)起算)的組合寫到一個list呢?&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> combo &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [(row, col) &lt;span style="color:#c6a0f6">for&lt;/span> row &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">4&lt;/span>) &lt;span style="color:#c6a0f6">for&lt;/span> col &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">3&lt;/span>)] &lt;span style="color:#6e738d;font-style:italic"># 留意4跟3的順序&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> combo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[(&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>), (&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>), (&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>), (&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>), (&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>), (&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>), (&lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>), (&lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>), (&lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>), (&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>), (&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>), (&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>)]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>(註：像這樣子在存取每一個格子都需要指定兩層index的串列，&lt;br>
我們稱之為二維串列，代表它有兩個維度。)&lt;/p>
&lt;p>字典和集合也有生成式，其概念和列表生成式一致，&lt;br>
&lt;strong>只是字典的話就會是{key:value for 單項 in 迭代項} &lt;br>
(必須給出key跟value的部分)&lt;/strong>&lt;br>
集合的話除了外面是&lt;strong>大括號&lt;/strong> 外，和列表生成式一致。&lt;/p>
&lt;p>接下來我們要來談一個程式語言很重要的東西：&lt;strong>函式(function)&lt;/strong>&lt;br>
還記得前面我們有做過計算圓面積的練習對吧？&lt;br>
計算圓面積明明是一個不會改變的公式，&lt;br>
但我們還是要反覆改動代入值，這樣顯得有點麻煩。&lt;br>
為了不要浪費時間在做相同的事情上，&lt;br>
我們可以將寫好的一段程式碼(比如剛剛講的算面積)，定義成函式，&lt;br>
就像數學的函式那樣，公式已經寫好了，只差將要算的東西代入進去就好。&lt;/p>
&lt;p>一個函式的程式架構一般如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">函式名&lt;/span>(變數1, 變數2, 變數3, &lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> yyy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> ooo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>def代表define(定義)&lt;/strong> ，後面接你的命名，&lt;br>
括號內是放入你需要從呼叫函式的對象那邊得到的變數(或者稱為參數)，&lt;br>
也可以都不放，表示你不需要從外界傳入；&lt;br>
接著就在這個函式內按照一般程式碼的流程來撰寫，&lt;br>
最終如果這個函式需要回報一些訊息的時候，則需要進行&lt;strong>return(回傳)&lt;/strong> 。&lt;/p>
&lt;p>我們拿圓面積計算為例：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">area&lt;/span>(r):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> pi &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">3.14&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> &lt;span style="color:#f5a97f">3.14&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> r &lt;span style="color:#91d7e3;font-weight:bold">**&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 會將計算完的結果輸出到呼叫它的地方&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>由於Python是腳本式語言，&lt;br>
一個函式必需要先被定義或引入後，&lt;br>
才能夠被使用，所以我們必須在使用(或稱呼叫)函式前，&lt;br>
先將它定義完，在下一行開始才能夠使用它。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># area(1) 不能放在這邊，因為我們還沒有定義area函式!&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">area&lt;/span>(r):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> pi &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">3.14&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> &lt;span style="color:#f5a97f">3.14&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> r &lt;span style="color:#91d7e3;font-weight:bold">**&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;半徑長為1的圓，其面積為：&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(area(&lt;span style="color:#f5a97f">1&lt;/span>)))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;半徑長為3的圓，其面積為：&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(area(&lt;span style="color:#f5a97f">3&lt;/span>)))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>執行結果如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>半徑長為1的圓&lt;span style="color:#ed8796">，&lt;/span>其面積為&lt;span style="color:#ed8796">：&lt;/span>&lt;span style="color:#f5a97f">3.14&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>半徑長為3的圓&lt;span style="color:#ed8796">，&lt;/span>其面積為&lt;span style="color:#ed8796">：&lt;/span>&lt;span style="color:#f5a97f">28.26&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>假設我們今天不滿足圓周率pi只用3.14的話，&lt;br>
除了用math模組的pi外(引入模組這部分之後再講)，&lt;br>
那麼就必須將pi也一併設定為可以拿進來用的變數。&lt;br>
但是一般來說，像pi這類型的常數，&lt;br>
我們會希望**「不特別講的話就按照預設的來」，** 這時候我們可以利用在&lt;strong>給入的變數的後面加上等號及一個值&lt;/strong> ，&lt;br>
一旦這個&lt;strong>變數沒有被指定，就會使用預設值&lt;/strong> 。&lt;br>
此外，很多時候乍看之下，我們會容易不曉得一個函式中，&lt;br>
每一個位置先後要代入什麼才是對的順序，&lt;br>
為此，Python提供我們可以指定變數名稱的方式，&lt;br>
&lt;strong>只要輸入時有帶上變數名稱，即便順序和原先函式定義給的順序不一樣，&lt;br>
Python依舊可以正確地幫我們對應上。&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">area&lt;/span>(r, pi&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">3.14&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> pi &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> r &lt;span style="color:#91d7e3;font-weight:bold">**&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;半徑長為1的圓，其面積為：&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(area(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3.14159&lt;/span>))) &lt;span style="color:#6e738d;font-style:italic"># 指定圓周率&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;半徑長為3的圓，其面積為：&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(area(&lt;span style="color:#f5a97f">3&lt;/span>))) &lt;span style="color:#6e738d;font-style:italic"># 不指定圓周率，使用預設值3.14&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;半徑長為3的圓，其面積為：&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(area(pi&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">3.141&lt;/span>, r&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">3&lt;/span>))) &lt;span style="color:#6e738d;font-style:italic"># 順序會被自動對上&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>結果如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>半徑長為1的圓&lt;span style="color:#ed8796">，&lt;/span>其面積為&lt;span style="color:#ed8796">：&lt;/span>&lt;span style="color:#f5a97f">3.14159&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>半徑長為3的圓&lt;span style="color:#ed8796">，&lt;/span>其面積為&lt;span style="color:#ed8796">：&lt;/span>&lt;span style="color:#f5a97f">28.26&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>半徑長為3的圓&lt;span style="color:#ed8796">，&lt;/span>其面積為&lt;span style="color:#ed8796">：&lt;/span>&lt;span style="color:#f5a97f">28.269&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>同樣的，在函式內部也可以定義函式，&lt;br>
一樣的概念，要有定義過的才能被呼叫使用，&lt;br>
同時，可以接受參數，但也可以直接用其外層得到的變數。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">printAll&lt;/span>(r, pi&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">3.14&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">area&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> pi &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> r &lt;span style="color:#91d7e3;font-weight:bold">**&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">perimeter&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">return&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> pi &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> r
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6e738d;font-style:italic"># 下面{}的用法是所謂的format，可以將多個變數按照順序放置到{}中&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;半徑 = &lt;/span>&lt;span style="color:#a6da95">{}&lt;/span>&lt;span style="color:#a6da95">的圓，其面積 = &lt;/span>&lt;span style="color:#a6da95">{}&lt;/span>&lt;span style="color:#a6da95">，周長 = &lt;/span>&lt;span style="color:#a6da95">{}&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>format(r, area(), perimeter()))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>printAll(&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">3.14159&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>執行結果如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>半徑 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span>的圓&lt;span style="color:#ed8796">，&lt;/span>其面積 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">28.27431&lt;/span>&lt;span style="color:#ed8796">，&lt;/span>周長 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">18.849539999999998&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我們前面已經提過，&lt;br>
&lt;strong>變數就像是將一個標籤(變數名稱)貼在一個裝有東西(資料)的箱子。&lt;/strong>&lt;br>
那麼，&lt;strong>你家的急救箱和我家的急救箱&lt;/strong> ，&lt;br>
雖然名字都是急救箱，但應該是指不一樣的東西。&lt;/p>
&lt;p>在Python或其他程式語言中也一樣，&lt;br>
一個名稱，有屬於它存在的適用範圍，我們稱之為命名空間。&lt;br>
如果在最外面(也就是沒有在函式中)命名一個變數的時候，&lt;br>
任何人應該都看得到這個變數的存在，並且可以自由使用它，&lt;br>
我們稱之為&lt;strong>全域變數&lt;/strong> 。&lt;/p>
&lt;p>那麼在函式內呢？&lt;br>
如果今天在公共的地方有一個急救箱，你又自己去買了一個急救箱回來，&lt;br>
那麼在命名時，&lt;br>
&lt;strong>你在你家稱呼的急救箱，自然是你自己買的那個，而非公共的。&lt;/strong>&lt;br>
(稱為&lt;strong>區域(local)變數&lt;/strong> )&lt;br>
除非你都用公共的，那麼自然你指的還是那個公共的急救箱&lt;br>
(&lt;strong>函式內可以取得全域變數&lt;/strong> )&lt;br>
如果打定主意要用全域變數，且有要進行修改的話，&lt;br>
請在函式內使用&lt;strong>global&lt;/strong> 這個關鍵字。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>fak &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;global&amp;#39;&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># First-Aid Kit&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">home1&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(fak) &lt;span style="color:#6e738d;font-style:italic"># 直接取得全域的變數，不做修改&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">home2&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> fak &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;h2&amp;#39;&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 定義一個local的變數，所以修改到的變數跟全域的fak無關&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(fak)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">def&lt;/span> &lt;span style="color:#8aadf4">home3&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">global&lt;/span> fak &lt;span style="color:#6e738d;font-style:italic"># 告訴Python現在要用的就是全域的那個fak&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> fak &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;h3&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(fak)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;Before:&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(fak)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">home1:&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>home1()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;After home1:&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(fak)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">home2:&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>home2()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;After home2:&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(fak)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">home3:&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>home3()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;After home3:&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(fak)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>所以我們可以看到這三者之間的差異，&lt;br>
一個只印出全域變數，一個只使用區域變數，第三個則是不但使用了全域變數且修改了它。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Before:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">global&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>home1:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">global&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>After home1:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">global&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>home2:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>h2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>After home2:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">global&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>home3:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>h3
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>After home3:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>h3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>註：其實還有更細節的部分，但講太多恐怕對初學者容易造成混淆，&lt;br>
我們還是先講這兩種就好，其他的在碰到狀況，或有興趣的話，&lt;br>
再請讀者搜尋變數範圍的部分。&lt;/p>
&lt;h3 id="那麼我們來做個練習吧">那麼我們來做個練習吧！
&lt;/h3>&lt;ol>
&lt;li>請使用兩個迴圏，將1~10之間的偶數兩兩相乘並放到一個空的list中。&lt;br>
(所以這個list應該會有&lt;br>
2 * 2, 2 * 4, 2 * 6, 2 * 8, 2 * 10, 4 * 2, 4 * 4, …, 10 * 10)&lt;/li>
&lt;li>請改用列表生成式來完成1的問題。&lt;/li>
&lt;li>請用while, if else等，寫出一個猜數字的遊戲，遊戲的答案為37，&lt;br>
請在開始時提示使用者猜1~100範圍中的數字，&lt;br>
並依據使用者的答案，逐步將範圍縮小，直到猜中答案，&lt;br>
則印出恭喜訊息並離開迴圏。&lt;br>
(先不考慮使用者會亂輸入的問題，&lt;br>
並且要告訴使用者這次猜的比答案大還是小)&lt;/li>
&lt;/ol>
&lt;p>那就明天見啦！&lt;/p>
&lt;p>2023/08/29: 感謝iT邦幫忙的Sean勘誤周長和面積呼叫順序顛倒的問題~&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (7) — 程式結構與流程語法：如果對手太弱太簡單，那不是很爽嗎?(上)</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-7-programming-structure-flow-control-1/</link><pubDate>Tue, 22 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-7-programming-structure-flow-control-1/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (7) — 程式結構與流程語法：如果對手太弱太簡單，那不是很爽嗎?(上)" />&lt;h2 id="day-07-程式結構與流程語法如果對手太弱太簡單那不是很爽嗎上">Day 07 程式結構與流程語法：如果對手太弱太簡單，那不是很爽嗎?(上)
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10240601" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10240601&lt;/a>&lt;/p>
&lt;h3 id="先來解答昨天的問題吧">先來解答昨天的問題吧！
&lt;/h3>&lt;ol>
&lt;li>李嚴的是炸鳳尾蝦，劉昴星的是雲龍炸蝦，&lt;br>
如同上一篇所提到的，字典的value是可以是list的！&lt;/li>
&lt;li>按照步驟，前三個問題要取liu-lee, lee-liu, lee &amp;amp; liu，&lt;br>
後面將set加進新的key後再替代回原本shrimp[‘炸鳳尾蝦’]。&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">23
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">24
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">25
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">26
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">27
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> shrimp &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> {&lt;span style="color:#a6da95">&amp;#39;炸鳳尾蝦&amp;#39;&lt;/span>:[&lt;span style="color:#a6da95">&amp;#39;蝦子&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;核果&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;油&amp;#39;&lt;/span>],&lt;span style="color:#a6da95">&amp;#39;雲龍炸蝦&amp;#39;&lt;/span>:[&lt;span style="color:#a6da95">&amp;#39;蝦子&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;核果&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;油&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;豆皮&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;醬汁&amp;#39;&lt;/span>]}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lee &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">set&lt;/span>(shrimp[&lt;span style="color:#a6da95">&amp;#39;炸鳳尾蝦&amp;#39;&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> liu &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">set&lt;/span>(shrimp[&lt;span style="color:#a6da95">&amp;#39;雲龍炸蝦&amp;#39;&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lee &lt;span style="color:#6e738d;font-style:italic"># 所以我說那個醬汁呢？&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;核果&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;油&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;蝦子&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> liu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;醬汁&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;蝦子&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;豆皮&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;核果&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;油&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> liu&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>lee
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;豆皮&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;醬汁&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lee&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>liu　&lt;span style="color:#6e738d;font-style:italic"># 李嚴沒有多用到的東西&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">set&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lee &lt;span style="color:#91d7e3;font-weight:bold">&amp;amp;&lt;/span> liu &lt;span style="color:#6e738d;font-style:italic"># 都用到的材料&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;核果&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;油&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;蝦子&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lee&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>add(&lt;span style="color:#a6da95">&amp;#39;蘋果&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;洋蔥&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;醬汁&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># set不能夠一次add多個key，除了一個一個加以外，也可以用update()方法。(lee.update([&amp;#39;蘋果&amp;#39;, &amp;#39;洋蔥&amp;#39;,&amp;#39;醬汁&amp;#39;]))&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;&amp;lt;stdin&amp;gt;&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">TypeError&lt;/span>: add() takes exactly one argument (&lt;span style="color:#f5a97f">3&lt;/span> given)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lee&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>add(&lt;span style="color:#a6da95">&amp;#39;蘋果&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lee&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>add(&lt;span style="color:#a6da95">&amp;#39;洋蔥&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lee&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>add(&lt;span style="color:#a6da95">&amp;#39;醬汁&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lee
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;洋蔥&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;醬汁&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;蝦子&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;蘋果&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;核果&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;油&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lee&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>liu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;洋蔥&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;蘋果&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> shrimp[&lt;span style="color:#a6da95">&amp;#39;炸鳳尾蝦&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">list&lt;/span>(lee)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> shrimp
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;炸鳳尾蝦&amp;#39;&lt;/span>: [&lt;span style="color:#a6da95">&amp;#39;洋蔥&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;醬汁&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;蝦子&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;蘋果&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;核果&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;油&amp;#39;&lt;/span>], &lt;span style="color:#a6da95">&amp;#39;雲龍炸蝦&amp;#39;&lt;/span>: [&lt;span style="color:#a6da95">&amp;#39;蝦子&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;核果&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;油&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;豆皮&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;醬汁&amp;#39;&lt;/span>]}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol>
&lt;li>按照題目要求一個一個來就可以了，請留意index的初始値是0這點呦！&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">6&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt1 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> lt[::&lt;span style="color:#f5a97f">2&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> lt[&lt;span style="color:#f5a97f">1&lt;/span>::&lt;span style="color:#f5a97f">2&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt1, lt2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>([&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>], [&lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">6&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>extend(lt2)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">6&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">del&lt;/span> lt1[&lt;span style="color:#f5a97f">7&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">del&lt;/span> lt1[&lt;span style="color:#f5a97f">1&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>sort()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">8&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來，讓我們來介紹今天的主題：程式結構與流程語法。&lt;br>
在這篇文章中，我們要來介紹一些超級無敵常用的東西，&lt;br>
常用到基本上天天會遇到的那種。&lt;/p>
&lt;p>首先是程式結構。&lt;br>
我們應該在前幾篇文章中有提到過，&lt;br>
在Python中當需要執行的東西比較多時，&lt;br>
我們是可以將一整段寫在一個.py檔案裡，&lt;br>
再用&lt;strong>python xxx.py&lt;/strong> 的方式去執行，對吧！&lt;br>
在之後的程式裡，如果程式碼比較多比較複雜，&lt;br>
建議讀者先將程式規劃好打在檔案內，再進行執行，&lt;br>
可以避免打錯造成的一些麻煩。&lt;/p>
&lt;p>先來談談&lt;strong>註解&lt;/strong> ，註解通常使用**「#」&lt;strong>的符號，&lt;br>
基本上意味著&lt;/strong>一行程式碼在這個符號後面的任何東西都不會有影響。&lt;br>
&lt;strong>(且只影響該行)&lt;br>
(但是擺在字串內的話就不會有註解的效果，會被當成普通的字元)&lt;br>
通常狀況下，在文字編輯器內將想註解的行框起來，再按&lt;/strong>Ctrl+/**，&lt;br>
編輯器會自動幫助你將這幾行都註解起來。&lt;br>
如果要多行註解的話，也可以在行的最前面使用’’’ (三個單引號)，&lt;br>
註解結束的位置同樣放置’’’。&lt;br>
(但這種註解一般被視為在為函式(後面會提到)打說明文件用的文字，&lt;br>
稱之為文件字串(docstring)，&lt;br>
沒特別需求的話，Ctrl+/即可)&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;&amp;#39;&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">a = 10
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">b = 5
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">print(a * b)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">print(&amp;#34;一起從零開始學Python，我知道10 * 5 = &amp;#34; + str(a * b))
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95"># 雖然這行有「#」，但實際起作用是外層造成的
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;&amp;#39;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果你有一整行很長的運算或文字，&lt;br>
想要做換行的話，請在換行之前的&lt;strong>行尾放上「\」&lt;/strong> ，&lt;br>
Python會將這樣延續下去的行都當成同一行解讀。&lt;br>
如果在直譯器的狀態下也適用，&lt;br>
這時候直譯器會顯示「…」，代表這行還沒輸入完。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#f5a97f">5&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#f5a97f">7&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#f5a97f">11&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#f5a97f">18&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#f5a97f">23&lt;/span>\
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">77&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來就是所有程式基本上都有的方法：如果(if)&lt;br>
「如果…我就…」這種思維邏輯是日常中很常用到的概念，&lt;br>
Python中也不例外，我們常常需要很多判斷來決定下一步要怎麼走。&lt;br>
語法結構如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">if&lt;/span> 陳述式1:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 要做的事情1(可以不只一行)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">elif&lt;/span> 陳述式2:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 要做的事情2(可以不只一行)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">else&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 要做的事情n(可以不只一行)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>上面的意思是說，&lt;strong>當陳述式1的結果是真(True)的的時候，&lt;br>
就做「要做的事情1」&lt;/strong>，&lt;br>
&lt;strong>否則如果(elif, 也就是else if的意思)陳述式2是真的的時候，&lt;br>
就做「要做的事情2」&lt;/strong>，&lt;br>
可以一直接續，前面的陳述式(statement)一旦&lt;strong>先碰到一組是真的時候，&lt;br>
做完要做的事情就離開了&lt;/strong>，&lt;br>
並&lt;strong>不會繼續往下看&lt;/strong> 。&lt;br>
一直到最後一個else的時候，&lt;strong>前面的都不成立，就做「要做的事情n」&lt;/strong> 。&lt;br>
這個結構底下，你可以選擇使用if, if…elif…else, if…else, if…elif都可以。&lt;br>
(只要順序是&lt;strong>if最先，elif其次，else擺最後&lt;/strong> 即可)&lt;/p>
&lt;p>其他語言在框「要做的事情」時，&lt;br>
通常會使用大括號{}來表達開頭和結尾，&lt;br>
這點在Python中有很大的不同！&lt;br>
Python中會在陳述式後面加上一個冒號:來做為分界，&lt;br>
接下來的式子執行到哪裡，&lt;strong>並不使用大括號，&lt;br>
而是看縮排的程式碼到哪一行&lt;/strong>。&lt;br>
(一般縮排是用&lt;strong>4個空格&lt;/strong> ，盡量不要使用tab或2個空格)&lt;br>
還記得上一篇問題中的炸蝦嗎？&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>lee &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> {&lt;span style="color:#a6da95">&amp;#39;核果&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;油&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;蝦子&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">if&lt;/span> &lt;span style="color:#a6da95">&amp;#39;醬汁&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">not&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> lee: &lt;span style="color:#6e738d;font-style:italic"># 李嚴並沒有做醬汁，所以這個陳述式會是真&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;李嚴&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;沒醬汁&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">else&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;有醬汁&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;所以我說那個醬汁呢？&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 這個print並不在else的範圍內！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我們執行上面的程式碼的結果應該會得到：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>李嚴
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>沒醬汁
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>所以我說那個醬汁呢&lt;span style="color:#ed8796">？&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>因為最後一行並沒有縮排，所以不會算在else的範圍內，&lt;br>
依舊會被print出來。&lt;br>
在判斷的時候，除了剛剛示範的in，&lt;br>
可以使用其他的比較運算子及布林運算子來計算真假。&lt;br>
&lt;strong>比較運算子&lt;/strong> 有：&lt;strong>==(相等，因為一個等號是將右邊的東西指定給左邊), !=(不等於),&lt;br>
&amp;lt;(小於), &amp;gt;(大於), &amp;lt;=(小於等於), &amp;gt;=(大於等於), in…(前者在後者的範圍內)&lt;/strong>&lt;br>
&lt;strong>布林運算子&lt;/strong> 常用的有：&lt;strong>and(且), or(或), not(否定)&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> x&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">24&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> x&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>&lt;span style="color:#f5a97f">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> x&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#f5a97f">21&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">12&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>x&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#f5a97f">100&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 相當於12 &amp;lt; x and x &amp;lt; 100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> x &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">24&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">24&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">33&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> x &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> lt &lt;span style="color:#91d7e3;font-weight:bold">and&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">not&lt;/span> x &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span> &lt;span style="color:#f5a97f">23&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># and/or的優先順序比較低，會等左右計算完成才處理，not會將結果反轉&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如果有很多重的判斷的話，&lt;br>
我們也可以將其寫成不同層來處理，&lt;br>
怎麼判斷不同層的方式，一樣是看縮排來決定。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>x &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">24&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">if&lt;/span> x &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> x &lt;span style="color:#91d7e3;font-weight:bold">%&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;6的倍數&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">else&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;2的倍數&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">else&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;不是2的倍數&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>執行完應該會print出’6的倍數’，讀者也可以自行嘗試做出不同的多層if結構。&lt;/p>
&lt;p>接著要補充一個很重要的點：&lt;br>
Python在處理判斷時，也可以將單純的資料型態做為判斷的依據，&lt;br>
這時候主要在考慮的，就是&lt;strong>這個資料型態是否有存放東西，或者它是0&lt;/strong> 。&lt;br>
包含&lt;strong>False, None(代表沒有東西), 0, 0.0, ‘’(空字串), [], (), {}, set()等，&lt;br>
在做為True/False的判斷中，都會被視為False&lt;/strong>。&lt;/p>
&lt;p>所以例如要判斷一個list是否為空，我們可以這樣寫：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> []
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">if&lt;/span> lt:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;lt is not empty&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#c6a0f6">else&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;lt is empty&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lt &lt;span style="color:#91d7e3;font-weight:bold">is&lt;/span> empty
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來我們來談談&lt;strong>迴圈&lt;/strong> 。&lt;br>
迴圈在Python裡面有兩種：while跟for。&lt;br>
while的語法結構如下。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">while&lt;/span> 陳述式:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> yyy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> zzz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>while很簡單，&lt;strong>只要這個陳述式是真的&lt;/strong> ，就會將下面的&lt;strong>程式碼區塊執行一次&lt;/strong> ，&lt;br>
做完以後呢？&lt;strong>回到while這行，重新判斷一次&lt;/strong> ，&lt;br>
如果還是成立，就再做一次；&lt;br>
一直到陳述式不成立，或者我們呼叫一些其他的東西強行跳出，才會離開。&lt;br>
可以用來跳離迴圈的方式名為&lt;strong>break&lt;/strong> ，顧名思義就是強行&lt;strong>中止現在所在的迴圈&lt;/strong> ，&lt;br>
&lt;strong>不繼續往下執行&lt;/strong> 。&lt;br>
另外有一個功能叫&lt;strong>continue&lt;/strong> ，目的是&lt;strong>跳過這次的迴圈&lt;/strong> (只跳過這次歐！)，&lt;br>
&lt;strong>回到while這行&lt;/strong> ，依照陳述式的結果決定要不要再繼續執行。&lt;/p>
&lt;p>我們下面使用input()方法來示範，它能顯示提示字樣，並接受使用者輸入一段字串存放，&lt;br>
讀者可以自行試試看，是否除非你選擇專家模式，否則完全無法離開迴圈。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">while&lt;/span> &lt;span style="color:#f5a97f">True&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 使用while True須謹慎，一定要留下可以離開的方法！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> mode &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">input&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;請問你要選擇什麼模式？1. 簡單模式 2. 困難模式 3. 專家模式 [輸入1, 2, 3] &amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> mode &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#a6da95">&amp;#39;3&amp;#39;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">選擇專家模式的難關 帶著我的夥伴 還有我的不平凡&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">break&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">elif&lt;/span> mode &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#a6da95">&amp;#39;1&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span> mode &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#a6da95">&amp;#39;2&amp;#39;&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 簡單來說，其他模式都不給過XD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;不選難一點的嗎？再給你選一次！&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">continue&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 所以在這邊會直接回到迴圈開始處，因而不會印出下一行&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;請輸入正確的選項！&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;恭喜你選擇專家模式，加油！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>請問你要選擇什麼模式&lt;span style="color:#ed8796">？&lt;/span>&lt;span style="color:#f5a97f">1.&lt;/span> 簡單模式 &lt;span style="color:#f5a97f">2.&lt;/span> 困難模式 &lt;span style="color:#f5a97f">3.&lt;/span> 專家模式 [輸入1, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>] &lt;span style="color:#f5a97f">5545&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>請輸入正確的選項&lt;span style="color:#ed8796">！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>請問你要選擇什麼模式&lt;span style="color:#ed8796">？&lt;/span>&lt;span style="color:#f5a97f">1.&lt;/span> 簡單模式 &lt;span style="color:#f5a97f">2.&lt;/span> 困難模式 &lt;span style="color:#f5a97f">3.&lt;/span> 專家模式 [輸入1, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>] &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>不選難一點的嗎&lt;span style="color:#ed8796">？&lt;/span>再給你選一次&lt;span style="color:#ed8796">！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>請問你要選擇什麼模式&lt;span style="color:#ed8796">？&lt;/span>&lt;span style="color:#f5a97f">1.&lt;/span> 簡單模式 &lt;span style="color:#f5a97f">2.&lt;/span> 困難模式 &lt;span style="color:#f5a97f">3.&lt;/span> 專家模式 [輸入1, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>] &lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>不選難一點的嗎&lt;span style="color:#ed8796">？&lt;/span>再給你選一次&lt;span style="color:#ed8796">！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>請問你要選擇什麼模式&lt;span style="color:#ed8796">？&lt;/span>&lt;span style="color:#f5a97f">1.&lt;/span> 簡單模式 &lt;span style="color:#f5a97f">2.&lt;/span> 困難模式 &lt;span style="color:#f5a97f">3.&lt;/span> 專家模式 [輸入1, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>] &lt;span style="color:#f5a97f">3&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>選擇專家模式的難關 帶著我的夥伴 還有我的不平凡
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>恭喜你選擇專家模式&lt;span style="color:#ed8796">，&lt;/span>加油&lt;span style="color:#ed8796">！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>在Python中，迴圈還有一個特別的用法，就是可以加else。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">while&lt;/span> 陳述式:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xxx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">else&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ooo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>當while&lt;strong>正常的結束，沒有被break跳出&lt;/strong> 的話，&lt;br>
離開後就會出來找else的區塊執行。&lt;br>
(讀者可將其想成if else的感覺，&lt;br>
正常離開迴圈就是陳述式結果為false的狀況，所以要走else路線)&lt;br>
反之，當迴圈是被break強行離開時，就不會走到else去了！&lt;br>
舉例來說，我們也可以將上面改成：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>mode &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">while&lt;/span> mode &lt;span style="color:#91d7e3;font-weight:bold">!=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;3&amp;#39;&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 使用者選專家模式才能離開！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> mode &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">input&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;請問你要選擇什麼模式？1. 簡單模式 2. 困難模式 3. 專家模式 [輸入1, 2, 3] &amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">if&lt;/span> mode &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#a6da95">&amp;#39;3&amp;#39;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">選擇專家模式的難關 帶著我的夥伴 還有我的不平凡&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">elif&lt;/span> mode &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#a6da95">&amp;#39;1&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">or&lt;/span> mode &lt;span style="color:#91d7e3;font-weight:bold">==&lt;/span> &lt;span style="color:#a6da95">&amp;#39;2&amp;#39;&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 簡單來說，其他模式都不給過XD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;不選難一點的嗎？再給你選一次！&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">else&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;不想玩就算了！&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 不想玩的，後續就不繼續給提示&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#c6a0f6">break&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">else&lt;/span>: &lt;span style="color:#6e738d;font-style:italic"># 正常離開，表示mode輸入了&amp;#39;3&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;恭喜你選擇專家模式，加油！&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>請問你要選擇什麼模式&lt;span style="color:#ed8796">？&lt;/span>&lt;span style="color:#f5a97f">1.&lt;/span> 簡單模式 &lt;span style="color:#f5a97f">2.&lt;/span> 困難模式 &lt;span style="color:#f5a97f">3.&lt;/span> 專家模式 [輸入1, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>] &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>不選難一點的嗎&lt;span style="color:#ed8796">？&lt;/span>再給你選一次&lt;span style="color:#ed8796">！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>請問你要選擇什麼模式&lt;span style="color:#ed8796">？&lt;/span>&lt;span style="color:#f5a97f">1.&lt;/span> 簡單模式 &lt;span style="color:#f5a97f">2.&lt;/span> 困難模式 &lt;span style="color:#f5a97f">3.&lt;/span> 專家模式 [輸入1, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>] &lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>不選難一點的嗎&lt;span style="color:#ed8796">？&lt;/span>再給你選一次&lt;span style="color:#ed8796">！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>請問你要選擇什麼模式&lt;span style="color:#ed8796">？&lt;/span>&lt;span style="color:#f5a97f">1.&lt;/span> 簡單模式 &lt;span style="color:#f5a97f">2.&lt;/span> 困難模式 &lt;span style="color:#f5a97f">3.&lt;/span> 專家模式 [輸入1, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>] &lt;span style="color:#f5a97f">3&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>選擇專家模式的難關 帶著我的夥伴 還有我的不平凡
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>恭喜你選擇專家模式&lt;span style="color:#ed8796">，&lt;/span>加油&lt;span style="color:#ed8796">！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>C:\Users\Desolve&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>python fromzero&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>py
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>請問你要選擇什麼模式&lt;span style="color:#ed8796">？&lt;/span>&lt;span style="color:#f5a97f">1.&lt;/span> 簡單模式 &lt;span style="color:#f5a97f">2.&lt;/span> 困難模式 &lt;span style="color:#f5a97f">3.&lt;/span> 專家模式 [輸入1, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>] &lt;span style="color:#f5a97f">8&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>不想玩就算了&lt;span style="color:#ed8796">！&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>通常狀況下，我們會將迴圏的過程每一次的執行稱為&lt;strong>一次迭代(iteration)&lt;/strong> 。&lt;br>
有些資料型態可以適合每次從裡面取出一個單位出來，&lt;br>
例如&lt;strong>str, list, set, dict, tuple…等，&lt;br>
這時候我們會說這些是可迭代的Python物件&lt;/strong>。&lt;/p>
&lt;p>對於可迭代的東西，我們有另一個for迴圏的模式可以輕鬆處理。&lt;br>
for迴圏的語法結構如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c6a0f6">for&lt;/span> xxx &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> ooo:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> (對xxx做事情&lt;span style="color:#ed8796">，&lt;/span>比如印出來)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>舉例來說，我們可以從一個list中一個一個取出當中的element，&lt;br>
並將其印出。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">23
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">100&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">for&lt;/span> num &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> lt:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(num)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> index &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 也可以用index的方式一個一個拿，不要忘記將index每次加1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">while&lt;/span> index &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span> &lt;span style="color:#91d7e3">len&lt;/span>(lt):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(lt[index])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> index &lt;span style="color:#91d7e3;font-weight:bold">+=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">100&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>如上篇文章提到的，字典的items()也會產生可迭代的物件，&lt;br>
我們可以按順序用name和ingre(ingredient)來對應它。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> shrimp &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> {&lt;span style="color:#a6da95">&amp;#39;炸鳳尾蝦&amp;#39;&lt;/span>:[&lt;span style="color:#a6da95">&amp;#39;蝦子&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;核果&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;油&amp;#39;&lt;/span>],&lt;span style="color:#a6da95">&amp;#39;雲龍炸蝦&amp;#39;&lt;/span>:[&lt;span style="color:#a6da95">&amp;#39;蝦子&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;核果&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;油&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;豆皮&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;醬汁&amp;#39;&lt;/span>]}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">for&lt;/span> name, ingre &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> shrimp&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>items():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(name, ingre)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>炸鳳尾蝦 [&lt;span style="color:#a6da95">&amp;#39;蝦子&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;核果&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;油&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>雲龍炸蝦 [&lt;span style="color:#a6da95">&amp;#39;蝦子&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;核果&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;油&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;豆皮&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;醬汁&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>另一方面，break, continue, else在for迴圏的用法和while迴圏的用法是一模一樣的，&lt;br>
讀者可以自行嘗試寫寫看。&lt;/p>
&lt;p>提到了for，就不得不提另一個很常用的產生迭代的方式：range()。&lt;br>
range()的用法跟slice很像，都是(start, stop, step)；&lt;br>
這當中，&lt;strong>start不給的話會從0開始，step預設則是1，&lt;br>
而stop由於不像list有確定的長度，所以是必需要給出的數字。&lt;/strong>&lt;br>
(同樣請留意&lt;strong>stop的位置是不算在內的，這點跟slice相同&lt;/strong> )&lt;br>
例如：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">7&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 只給一個數字的話是表示stop，所以相當於range(0, 7)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">list&lt;/span>(&lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">7&lt;/span>)) &lt;span style="color:#6e738d;font-style:italic"># 可以將其產生為list&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">6&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">list&lt;/span>(&lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">list&lt;/span>(&lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>)) &lt;span style="color:#6e738d;font-style:italic"># step走-1並沒有符合的數字&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">list&lt;/span>(&lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">list&lt;/span>(&lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">88&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">20&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">30&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">40&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">50&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">60&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">70&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">80&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>因此，如果我們想要從list中從頭每次相隔2，印出其值，就可以寫成這樣：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">10&lt;/span>, &lt;span style="color:#f5a97f">100&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">for&lt;/span> i &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3">range&lt;/span>(&lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#91d7e3">len&lt;/span>(lt), &lt;span style="color:#f5a97f">2&lt;/span>): &lt;span style="color:#6e738d;font-style:italic"># 從index 0開始，每次間隔2，直到len(lt)-1 (因為stop的位置不算)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(lt[i])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">...&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">100&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>辛苦啦！今天的內容也相當的多，&lt;br>
同樣請練習一下，可別偷懶呦！&lt;br>
那就明天見啦！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (6) — 串列(list)、Tuple(元組)、字典(dict)、集合(set)：我的字典裡沒有放棄，因為我還沒有寫進去(下)</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-6-list-tuple-dict-set-2/</link><pubDate>Mon, 21 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-6-list-tuple-dict-set-2/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (6) — 串列(list)、Tuple(元組)、字典(dict)、集合(set)：我的字典裡沒有放棄，因為我還沒有寫進去(下)" />&lt;h2 id="day-06-串列listtuple元組字典dict集合set我的字典裡沒有放棄因為我還沒有寫進去下">Day 06 串列(list)、Tuple(元組)、字典(dict)、集合(set)：我的字典裡沒有放棄，因為我還沒有寫進去(下)
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10240088/" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10240088/&lt;/a>&lt;/p>
&lt;p>接下來我們要介紹另外兩個資料型態：字典(dict)與集合(set)。&lt;br>
首先是字典：&lt;br>
字典跟串列有點類似的部分，&lt;br>
但是它的表示方式是一個鍵(key)對一個值(value)，&lt;br>
就好像函式一樣，一個字典裡面不會出現重覆的key，&lt;br>
但有可能不同key對應的value剛好一樣；&lt;br>
這樣一來，我們就可以用key去查找其對應的value。&lt;br>
需要注意的是，串列是有一個固定的順序排列的，&lt;br>
但字典並不會有固定排序(也就是說一般我們不在意排的順序)。&lt;/p>
&lt;p>key和value可以是各種不同的型態如str, int, float, bool等等，&lt;br>
但是key必須要是hashable的資料型態(像list就不是hashable)，&lt;br>
value做為被對應的對象，則沒有這種限制。&lt;/p>
&lt;p>字典的建立方式，可以用dict()方法，也可以用大括號{}，&lt;br>
當中每個key和value的對應使用冒號:來分隔，&lt;br>
而每組key:value之間，使用逗號來分開。&lt;br>
同時，要取得某個key對應的value值，&lt;br>
就像list是用index來取得對應位置的値，字典則使用dict[key]來取得。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dic0 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">dict&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dic0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dic &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> {&lt;span style="color:#a6da95">&amp;#39;xd&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;放棄&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">False&lt;/span>, [&lt;span style="color:#f5a97f">1&lt;/span>,&lt;span style="color:#f5a97f">5&lt;/span>,&lt;span style="color:#f5a97f">9&lt;/span>]: &lt;span style="color:#f5a97f">3&lt;/span>} &lt;span style="color:#6e738d;font-style:italic"># list是unhashable，不能作為key&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;&amp;lt;stdin&amp;gt;&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">TypeError&lt;/span>: unhashable &lt;span style="color:#91d7e3">type&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;list&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dic &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> {&lt;span style="color:#a6da95">&amp;#39;xd&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;放棄&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">False&lt;/span>, &lt;span style="color:#f5a97f">3.33&lt;/span>: &lt;span style="color:#f5a97f">3&lt;/span>} &lt;span style="color:#6e738d;font-style:italic"># 這樣就沒問題啦！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dic
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;xd&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;放棄&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">False&lt;/span>, &lt;span style="color:#f5a97f">3.33&lt;/span>: &lt;span style="color:#f5a97f">3&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dic[&lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 在程式語言的世界裡，通常大小寫是當作不一樣的呦！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;&amp;lt;stdin&amp;gt;&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">KeyError&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dic[&lt;span style="color:#a6da95">&amp;#39;xd&amp;#39;&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 取值&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dic[&lt;span style="color:#a6da95">&amp;#39;放棄&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dic[&lt;span style="color:#f5a97f">3.33&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">3&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>上篇提到list()可以拿來轉換，dict()也有類似的特異功能，&lt;br>
只要內容是剛好每一組都是兩項的就可以了！&lt;br>
(串列/tuple/剛好兩個字元的字串…)&lt;br>
我們看一下範例：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lol &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [(&lt;span style="color:#a6da95">&amp;#39;易大師&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;我的劍，就是你的劍。&amp;#39;&lt;/span>),(&lt;span style="color:#a6da95">&amp;#39;犽宿&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;死亡如風，常伴吾身。&amp;#39;&lt;/span>),(&lt;span style="color:#a6da95">&amp;#39;阿祈爾&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;蘇瑞瑪！你的王已經歸來了！&amp;#39;&lt;/span>)]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diclol &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">dict&lt;/span>(lol)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diclol
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;易大師&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;我的劍，就是你的劍。&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;犽宿&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;死亡如風，常伴吾身。&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;阿祈爾&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;蘇瑞瑪！你的王已經歸來了！&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> tul &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> ([&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>],[&lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>],[&lt;span style="color:#a6da95">&amp;#39;e&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;f&amp;#39;&lt;/span>],[&lt;span style="color:#a6da95">&amp;#39;g&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;h&amp;#39;&lt;/span>]) &lt;span style="color:#6e738d;font-style:italic"># 裡外兩層不管是tuple或list都沒有問題！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dictul &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">dict&lt;/span>(tul)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dictul
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;e&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;f&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;g&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;h&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> chs &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#a6da95">&amp;#39;ab&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;cd&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;13&amp;#39;&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 兩個字元的字串會被拆開用(但超過兩個字元就不支援了)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicchs &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">dict&lt;/span>(chs)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicchs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;1&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;3&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>我們可以使用類似list的方式來對字典插入或修改某個key對應的value值，&lt;br>
如果該key已經存在在字典，則對應的value會被覆蓋，否則就產生一個新的對應。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diclol[&lt;span style="color:#a6da95">&amp;#39;伊澤瑞爾&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;是時候展現真正的技術了！&amp;#39;&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 新增&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diclol
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;易大師&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;我的劍，就是你的劍。&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;犽宿&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;死亡如風，常伴吾身。&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;阿祈爾&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;蘇瑞瑪！你的王已經歸來了！&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;伊澤瑞爾&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;是時候展現真正的技術了！&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicchs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;1&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;3&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicchs[&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>]&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 修改&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicchs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;1&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;3&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來是一些常見的dict操作方法，同樣請多加練習，&lt;br>
讀者可能會發現很多會跟list的操作概念相同，所以可以的話，請對照著比較一下。&lt;br>
&lt;strong>dict1.update(dict2)&lt;/strong> -&amp;gt; 將dict2的內容複製後放到dict1(** key重覆時，dict2的value優先**)。&lt;br>
&lt;strong>del dict1[‘key’]&lt;/strong> -&amp;gt; 將dict1的**’key’:’value’** 的對應從dict1中&lt;strong>刪去**。&lt;br>
&lt;strong>dict1.clear()&lt;/strong> -&amp;gt; ** 清空&lt;/strong>整個dict1的對應(也可以用dict1 = dict())。&lt;br>
&lt;strong>‘XXX’ in dict1&lt;/strong> -&amp;gt; 檢查dict1是否有’XXX’這個key。&lt;br>
&lt;strong>dict1.keys()&lt;/strong> -&amp;gt; 給出整個dict1的** 所有key**(如果需要用list的形式表達，請用** list()將其框住)。&lt;br>
dict1.values() -&amp;gt; 同上，但給出的是所有value**。&lt;br>
&lt;strong>dict1.items()&lt;/strong> -&amp;gt; 給出一個一個的** key:value對應**(每對都以tuple形式給出)。&lt;br>
&lt;strong>dict2 = dict1.copy()&lt;/strong> -&amp;gt; 複製一份dict1的內容，生成一個dict2的字典。&lt;br>
(註：如果是用dict2 = dict1，只會讓兩者&lt;strong>共用&lt;/strong> 一個字典，修改會動到同一個呦！)&lt;/p>
&lt;p>我們來看一下範例：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">23
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">24
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">25
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">26
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">27
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">28
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">29
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">30
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">31
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">32
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">33
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">34
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">35
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">36
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">37
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">38
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">39
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">40
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">41
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">42
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">43
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">44
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">45
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">46
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diclol[&lt;span style="color:#a6da95">&amp;#39;國動&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;社 社 社社社 社社 社會搖&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diclol &lt;span style="color:#6e738d;font-style:italic"># 前面建立的字典&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;易大師&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;我的劍，就是你的劍。&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;犽宿&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;死亡如風，常伴吾身。&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;阿祈爾&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;蘇瑞瑪！你的王已經歸來了！&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;伊澤瑞爾&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;是時候展現真正的技術了！&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;國動&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;社 社 社社社 社社 社會搖&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diclol[&lt;span style="color:#a6da95">&amp;#39;國動&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;社 社 社社社 社社 社會搖&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diclolfame &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> {&lt;span style="color:#a6da95">&amp;#39;國動&amp;#39;&lt;/span>:&lt;span style="color:#a6da95">&amp;#39;還敢下來阿冰鳥!&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;統神&amp;#39;&lt;/span>:&lt;span style="color:#a6da95">&amp;#39;他的手怎麼可以穿過我的叭叭啊！&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diclol&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>update(diclolfame) &lt;span style="color:#6e738d;font-style:italic"># 合併過去，重覆的會被覆蓋&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diclol
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;易大師&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;我的劍，就是你的劍。&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;犽宿&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;死亡如風，常伴吾身。&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;阿祈爾&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;蘇瑞瑪！你的王已經歸來了！&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;伊澤瑞爾&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;是時候展現真正的技術了！&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;國動&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;還敢下來阿冰鳥!&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;統神&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;他的手怎麼可以穿&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>過我的叭叭啊&lt;span style="color:#ed8796">！&lt;/span>&lt;span style="color:#a6da95">&amp;#39;}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">del&lt;/span> diclol[&lt;span style="color:#a6da95">&amp;#39;統神&amp;#39;&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 刪除對應的鍵值對&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> diclol
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;易大師&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;我的劍，就是你的劍。&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;犽宿&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;死亡如風，常伴吾身。&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;阿祈爾&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;蘇瑞瑪！你的王已經歸來了！&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;伊澤瑞爾&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;是時候展現真正的技術了！&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;國動&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;還敢下來阿冰鳥!&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicchs &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> {&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">123&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">428&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;1&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;3&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;eee&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">11&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicchs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">123&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">428&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;1&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;3&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;eee&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">11&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicchs&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>clear() &lt;span style="color:#6e738d;font-style:italic"># 清空字典&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicchs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#a6da95">&amp;#39;統神&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> diclolfame
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#a6da95">&amp;#39;統神&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> diclol &lt;span style="color:#6e738d;font-style:italic"># 我們剛剛刪除了，所以&amp;#39;統神&amp;#39;不會在diclol裡&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicn &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> {&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">4&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicn
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">4&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicn&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>keys() &lt;span style="color:#6e738d;font-style:italic"># 取得key&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dict_keys([&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">list&lt;/span>(dicn&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>keys()) &lt;span style="color:#6e738d;font-style:italic"># 如果需要list型式的話就外面加一層list()&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicn&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>values()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dict_values([&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicn&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>items()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dict_items([(&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>), (&lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>), (&lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>), (&lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>)])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dico &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> dicn &lt;span style="color:#6e738d;font-style:italic"># 直接用等號，在字典相當於貼標籤在同一個身上&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dico[&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dico
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">4&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicn &lt;span style="color:#6e738d;font-style:italic"># 結果原先的也一起被改到了！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">4&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dico &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> dicn&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>copy() &lt;span style="color:#6e738d;font-style:italic"># 使用copy()來處理&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dico[&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dico
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">4&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> dicn &lt;span style="color:#6e738d;font-style:italic"># 這樣dico和dicn就是兩個不一樣的字典囉！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;d&amp;#39;&lt;/span>: &lt;span style="color:#f5a97f">4&lt;/span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>(註：在其他語言裡，通常把key:value對應的資料結構稱作hash或hash map)&lt;/p>
&lt;p>接下來要講的是集合(set)。&lt;br>
集合不像字典，它的本身只有key而已，&lt;br>
每個key都必須&lt;strong>不重覆&lt;/strong> (就像數學學到的那樣)&lt;br>
要建立的方式，可以使用set()，或者使用大括號{}，&lt;br>
當中每個key之間使用逗號連接，要增加key則使用add()。&lt;br>
(同樣用大括號，集合沒有value對應的部份)&lt;br>
集合本身也是不講求排列順序的，這點和字典一樣。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">set&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&lt;/span> st &lt;span style="color:#6e738d;font-style:italic"># 因為空的大括號代表字典，所以要產生一個空集合只能使用set()，不能用{}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3">set&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>add(&lt;span style="color:#f5a97f">3&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#f5a97f">3&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>add(&lt;span style="color:#f5a97f">3&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 重覆的增加相同的key不會對set造成影響&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#f5a97f">3&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>add(&lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># set中的key不一定要有相同的資料型態&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">set&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;XDDDD&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 可以拿單一字串放入，會被拆開來看待(重覆的被刪去)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;D&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;X&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">set&lt;/span>([&lt;span style="color:#a6da95">&amp;#39;XDDDD&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;XDDD&amp;#39;&lt;/span>]) &lt;span style="color:#6e738d;font-style:italic"># list則會以元素為單位，此外，留意它並沒有順序。&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;XDDDD&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;XDDD&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st1 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> {&lt;span style="color:#a6da95">&amp;#39;A&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;C&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;E&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> {&lt;span style="color:#a6da95">&amp;#39;B&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;C&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;A&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;D&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#a6da95">&amp;#39;A&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> st1 &lt;span style="color:#6e738d;font-style:italic"># 集合同樣也可以用in來檢查是否存在key&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#a6da95">&amp;#39;e&amp;#39;&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> st1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>既然是集合，可想而知就會有許多跟數學上集合對應的操作，&lt;br>
我們就直接來看範例：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">23
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">24
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st1 &lt;span style="color:#91d7e3;font-weight:bold">&amp;amp;&lt;/span> st2 &lt;span style="color:#6e738d;font-style:italic"># &amp;#39;&amp;amp;&amp;#39;(念作and, 代表&amp;#39;且&amp;#39;，也就是兩者皆有才算有)和intersection都是取交集&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;C&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;A&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>intersection(st2)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;C&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;A&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st1 &lt;span style="color:#91d7e3;font-weight:bold">|&lt;/span> st2 &lt;span style="color:#6e738d;font-style:italic"># &amp;#39;|&amp;#39;(念作or, 代表&amp;#39;或&amp;#39;，也就是兩者之一有就可以了)和union都是取聯集&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;A&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;D&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;E&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;C&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;B&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>union(st2)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;A&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;D&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;E&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;C&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;B&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st1 &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> st2 &lt;span style="color:#6e738d;font-style:italic"># &amp;#39;-&amp;#39;和difference都是取差集，也就是取前者有，後者沒有&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;E&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st2 &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span> st1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;D&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;B&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>difference(st2)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;E&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st1 &lt;span style="color:#91d7e3;font-weight:bold">^&lt;/span> st2 &lt;span style="color:#6e738d;font-style:italic"># &amp;#39;^&amp;#39;(念作exclusive or, 代表&amp;#39;互斥或&amp;#39;，也就是只能其中一個有，另一個沒有的)和symmetric_difference(太長啦！不用記XD)都是取互斥或&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;B&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;D&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;E&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>symmetric_difference(st2)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{&lt;span style="color:#a6da95">&amp;#39;B&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;D&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;E&amp;#39;&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st1 &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;=&lt;/span> st2 &lt;span style="color:#6e738d;font-style:italic"># &amp;#39;&amp;lt;=&amp;#39;和issubset代表檢查前者是否是後者的子集&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st2 &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;=&lt;/span> st1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> st1&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>issubset(st2)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>其他還有一些，但有需要用到時再查對應功能即可。&lt;/p>
&lt;h3 id="最後一樣來做個練習吧">最後一樣來做個練習吧！
&lt;/h3>&lt;ol>
&lt;li>眾所周知，李嚴和劉昴星曾經比過炸龍蝦，&lt;br>
請建立一個字典名為shrimp，當中&lt;br>
請使用兩者的&lt;strong>作品的名字做為key&lt;/strong> ，&lt;br>
將其做的炸蝦所使用到的&lt;strong>材料/內容列表list做為value&lt;/strong> ，&lt;br>
&lt;strong>還未做完成的部分不算&lt;/strong> 。請參考原本對於兩人作品的描述如下：&lt;/li>
&lt;/ol>
&lt;p>李嚴的作品：「我的料理是&lt;strong>炸鳳尾蝦&lt;/strong> ，就是&lt;strong>蝦子&lt;/strong> 裹碎核果去炸的，將&lt;strong>核果&lt;/strong> 搗碎後裹在蝦肉上，&lt;strong>油&lt;/strong> 炸成為金黃色，不但要考慮核果跟蝦肉的比例，高低油溫的調節也需要高度的技術跟經驗的。鮮脆可口的核果外衣，經油炸之後，其香味立即倍增，堪稱人間第一美味，搭配特製醬汁來食用，味道更是妙不可言。跟醬汁巧妙的組合，這是這個炸蝦的精華所在。那個醬汁，那要先將蘋果，洋蔥等切成末之後，跟各種調味料以絕妙的比例互相調合。那個醬汁，再給我一分鐘我一定能完成的!」&lt;/p>
&lt;p>劉昴星的作品：「炸的香酥的&lt;strong>核果&lt;/strong> 外衣，蝦肉(&lt;strong>蝦子&lt;/strong> )的甘甜，與順滑可口的&lt;strong>醬汁&lt;/strong> 搭配起來，真是太棒了……我在蝦肉和外衣之間，夾了&lt;strong>豆皮&lt;/strong> 封住醬汁，如此一來，就算在油鍋裡炸，醬汁也一定不會流出來。裹著一層豆皮雲的龍蝦，名字叫做小當家特製&lt;strong>雲龍炸蝦&lt;/strong> ！」&lt;/p>
&lt;ol start="2">
&lt;li>
&lt;p>承1，請將兩人的材料從shrimp中取出，&lt;br>
分別放入兩個set中，並命名為’lee’跟’liu’。&lt;br>
請利用set的操作，回答以下問題：&lt;br>
劉昴星的作品中比李嚴的作品多用了什麼材料？&lt;br>
李嚴的作品中比劉昴星的作品多用了什麼材料？&lt;br>
兩人的作品都有用到什麼材料？&lt;br>
假定今天李嚴能做完醬汁的話，請將新增的材料(蘋果、洋蔥)以及內容(醬汁)，&lt;br>
加到lee這個set中，&lt;br>
接著請指出現在李嚴的作品中比劉昴星的作品多用了什麼材料？&lt;br>
並請將材料和內容更新回shrimp這個字典中的對應作品。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>已知有一個列表lt = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]，&lt;br>
請利用slice及其他方法來達成以下要求：&lt;br>
a. 請生成一個lt1，其內容為lt的所有奇數&lt;br>
b. 請生成一個lt2，其內容為lt的所有偶數&lt;br>
c. 請將lt2的所有元素依序附加到lt1上&lt;br>
d. 請刪除lt1當中index 7和index 1的數&lt;br>
e. 請將lt1進行排序&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>辛苦了，這兩篇對於初學者來說應該很長，&lt;br>
但很基本，請多加嘗試練習，&lt;br>
後續使用到對應用法如果還是忘記的話，&lt;br>
可以再回頭看著對照。&lt;br>
那就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (5) — 串列(list)、Tuple(元組)、字典(dict)、集合(set)：我的字典裡沒有放棄，因為我還沒有寫進去(上)</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-5-list-tuple-dict-set/</link><pubDate>Sun, 20 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-5-list-tuple-dict-set/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (5) — 串列(list)、Tuple(元組)、字典(dict)、集合(set)：我的字典裡沒有放棄，因為我還沒有寫進去(上)" />&lt;h2 id="day-05-串列listtuple元組字典dict集合set我的字典裡沒有放棄因為我還沒有寫進去上">Day 05 串列(list)、Tuple(元組)、字典(dict)、集合(set)：我的字典裡沒有放棄，因為我還沒有寫進去(上)
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10239342/" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10239342/&lt;/a>&lt;/p>
&lt;h3 id="先來解答昨天的問題吧">先來解答昨天的問題吧！
&lt;/h3>&lt;p>&lt;strong>1. 答案如下：&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> chs&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#a6da95">&amp;#39;abcdefghijklmnopqrstuvwxyz&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(chs[::&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>]) &lt;span style="color:#6e738d;font-style:italic"># 從尾往頭，step為-2，不要忘記沒有寫的還是要補冒號！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>zxvtrpnljhfdb
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(chs[&lt;span style="color:#f5a97f">16&lt;/span>]&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>chs[&lt;span style="color:#f5a97f">14&lt;/span>]&lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#a6da95">&amp;#39; &amp;#39;&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#a6da95">&amp;#39;有種果汁真好喝~&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 對吧XD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>qoo 有種果汁真好喝&lt;span style="color:#91d7e3;font-weight:bold">~&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>2. 已經知道bin的前兩位表示是0b，那麼利用slice取第二位以後即可。&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">bin&lt;/span>(&lt;span style="color:#f5a97f">36&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;0b100100&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#91d7e3">bin&lt;/span>(&lt;span style="color:#f5a97f">36&lt;/span>)[&lt;span style="color:#f5a97f">2&lt;/span>:])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">100100&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>3. 只要按照順序就可以接起來囉！&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a, b, c &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;pen&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;apple&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;pine&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(a&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>c&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>b&lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>a) &lt;span style="color:#6e738d;font-style:italic"># PPAP&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>penpineappleapplepen
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來，讓我們介紹幾個比較進階的資料型態：&lt;br>
&lt;strong>串列(list)、tuple(元組)、字典(dict)、集合(set)&lt;/strong>&lt;/p>
&lt;p>首先是串列和tuple，&lt;br>
由於Tuple的稱呼(元組)翻法實在相對比較少人愛用，&lt;br>
因此習慣上tuple就直接叫做tuple就可以了。&lt;br>
你說到底要念做「禿波」(too-pull)還是「他波」(tub-pull)呢？&lt;br>
Guido自己講說他都隨便念沒有關系，&lt;br>
不過我是都念咖死口啦！&lt;/p>
&lt;p>我們先講串列的部分，&lt;br>
&lt;strong>所謂的串列，就是一連串的元素(單一的資料)放進一個表裡面的東西。&lt;/strong>&lt;br>
這個表可以沒有任何元素，也可以有很多個元素，其數量是可以被改變的。&lt;br>
要做出一個串列，可以使用list()，或者一組中括號[]來表示，&lt;br>
當然，也可以在當中用逗號分隔每個元素並在開始時直接置入：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">23
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">24
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">25
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">26
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">27
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">28
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">29
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">30
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">31
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">32
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">33
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> []
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> llt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">list&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt, llt &lt;span style="color:#6e738d;font-style:italic"># 兩個都是空的串列&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>([], [])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#a6da95">&amp;#39;my&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;dict&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;doesn&lt;/span>&lt;span style="color:#8aadf4">\&amp;#39;&lt;/span>&lt;span style="color:#a6da95">t&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;have&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;the&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;word&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;giving&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;up.&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">9527&lt;/span>, &lt;span style="color:#f5a97f">True&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6e738d;font-style:italic"># 一個串列裡的元素彼此不一定非得要是同樣的資料型態，這點跟C++/Java等不同&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(lt)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;my&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;dict&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;doesn&amp;#39;t&amp;#34;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;have&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;the&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;word&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;giving&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;up.&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">9527&lt;/span>, &lt;span style="color:#f5a97f">True&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#a6da95">&amp;#39; &amp;#39;&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>join(lt) &lt;span style="color:#6e738d;font-style:italic"># 上一篇提到說使用join可以將串列連接，但必須要全都是字串&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;&amp;lt;stdin&amp;gt;&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">TypeError&lt;/span>: sequence item &lt;span style="color:#f5a97f">8&lt;/span>: expected &lt;span style="color:#91d7e3">str&lt;/span> instance, &lt;span style="color:#91d7e3">int&lt;/span> found
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#a6da95">&amp;#39; &amp;#39;&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>join(lt[:&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>]) &lt;span style="color:#6e738d;font-style:italic"># 串列同樣可以用slice，用法和字串的邏輯一樣，所以倒數2個被去掉後就能正常join了！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#34;my dict doesn&amp;#39;t have the word giving up.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> (&lt;span style="color:#a6da95">&amp;#39; &amp;#39;&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>join(lt[:&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>]))&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>split()　&lt;span style="color:#6e738d;font-style:italic"># 使用split可以將字串拆成串列&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;my&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;dict&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;doesn&amp;#39;t&amp;#34;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;have&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;the&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;word&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;giving&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;up.&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">list&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;apple pen&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 直接對字串使用list()方法，會將每個字元拆開來變成一個串列&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;p&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;p&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;l&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;e&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39; &amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;p&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;e&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;n&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt[&lt;span style="color:#f5a97f">3&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 單獨給定索引值(index)，就會得到對應位置的資料(別忘了是從0開始呦！)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;have&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt[&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">9527&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt[&lt;span style="color:#f5a97f">0&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;my&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt[&lt;span style="color:#f5a97f">100&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 但是不論用正數表達或負數表達，超過的部分都不會繞一圈回來，而是會顯示錯誤&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;&amp;lt;stdin&amp;gt;&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">IndexError&lt;/span>: &lt;span style="color:#91d7e3">list&lt;/span> index out of &lt;span style="color:#91d7e3">range&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt[::&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 同樣的，利用slice可以輕鬆做到將整個list反轉過來&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">True&lt;/span>, &lt;span style="color:#f5a97f">9527&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;up.&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;giving&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;word&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;the&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;have&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#34;doesn&amp;#39;t&amp;#34;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;dict&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;my&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt[&lt;span style="color:#f5a97f">2&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;0800&amp;#39;&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 指定index可以對list的對應的元素做更動&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;my&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;dict&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;0800&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;have&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;the&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;word&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;giving&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;up.&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">9527&lt;/span>, &lt;span style="color:#f5a97f">True&lt;/span>]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接著，留意到串列中的元素既然沒有限定，那麼元素可以是另一個串列嗎?&lt;br>
當然可以！&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt3 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>], [&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>], [&lt;span style="color:#f5a97f">6&lt;/span>, &lt;span style="color:#f5a97f">7&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">0&lt;/span>], &lt;span style="color:#a6da95">&amp;#39;X&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;D&amp;#39;&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 有些元素是串列，有些只是單一的字元&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt3[&lt;span style="color:#f5a97f">0&lt;/span>], lt3[&lt;span style="color:#f5a97f">1&lt;/span>], lt3[&lt;span style="color:#f5a97f">2&lt;/span>][&lt;span style="color:#f5a97f">3&lt;/span>], lt3[&lt;span style="color:#f5a97f">3&lt;/span>], lt3[&lt;span style="color:#f5a97f">4&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 第二層的話就加括號和對應的index&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>([&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>], [&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">4&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>], &lt;span style="color:#f5a97f">0&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;X&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;D&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt3[&lt;span style="color:#f5a97f">4&lt;/span>][&lt;span style="color:#f5a97f">1&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 當取得的是str時，按照規則取字串的字元，超出的話會顯示錯誤&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;&amp;lt;stdin&amp;gt;&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">IndexError&lt;/span>: string index out of &lt;span style="color:#91d7e3">range&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt3[&lt;span style="color:#f5a97f">0&lt;/span>][&lt;span style="color:#f5a97f">2&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 當取得的是list時，超出取得的list的範圍的index也會顯示錯誤&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;&amp;lt;stdin&amp;gt;&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">IndexError&lt;/span>: &lt;span style="color:#91d7e3">list&lt;/span> index out of &lt;span style="color:#91d7e3">range&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>接下來是串列常見的一些操作，請務必多加熟練，&lt;br>
我們先簡單敘述一下常見的操作：(以下請將lt開頭的東西當成是list)&lt;br>
&lt;strong>lt.append(element)&lt;/strong> -&amp;gt; 將element接到lt的** 尾巴**。&lt;br>
&lt;strong>lt.extend(lt2)&lt;/strong> -&amp;gt; 將lt2的所有elements** 依序接到lt的尾巴** (相當於** lt+=lt2**)。&lt;br>
&lt;strong>lt.insert(index, element)&lt;/strong> -&amp;gt; 在index處插入element&lt;br>
(原本該位置及其後的元素都&lt;strong>往後挪&lt;/strong> )。&lt;br>
&lt;strong>del lt[index]&lt;/strong> -&amp;gt; 將index處的element** 刪去**，其他element** 往前遞補**。&lt;br>
&lt;strong>lt.remove(name)&lt;/strong> -&amp;gt; 從lt中** 搜尋符合name的element**，將其** 刪去**，&lt;br>
其他element&lt;strong>往前遞補&lt;/strong> 。&lt;br>
&lt;strong>lt.index(name)&lt;/strong> -&amp;gt; 從lt中** 搜尋符合name的element**，並將其** 索引值回報**。&lt;br>
&lt;strong>xx in lt&lt;/strong> -&amp;gt; 如果** xx這個元素在lt中&lt;strong>的話則為True，否則為Flase。&lt;br>
&lt;strong>lt.count(name)&lt;/strong> -&amp;gt; 計算name在lt&lt;/strong> 出現的次數**。&lt;br>
&lt;strong>lt.join(sep)&lt;/strong> -&amp;gt; 使用join內的間隔** sep**，將lt的元素** 一個一個接起來**。&lt;br>
&lt;strong>lt2 = sorted(lt)&lt;/strong> -&amp;gt; 將lt排序過後(按元素的順序** 由小到大**)，存放到lt2。&lt;br>
(lt不會受改變)&lt;br>
&lt;strong>lt.sort()&lt;/strong> -&amp;gt; 將lt於原地排序。&lt;br>
&lt;strong>len(lt)&lt;/strong> -&amp;gt; 取得lt的** 元素個數**。(想成取長度也行)&lt;br>
&lt;strong>lt2 = lt.copy()&lt;/strong>&lt;br>
&lt;strong>lt3 = list(lt)&lt;/strong> -&amp;gt; lt2~lt4都代表** 複製lt的所有元素&lt;strong>並&lt;/strong> 產生新的list**。&lt;br>
&lt;strong>lt4 = lt[:]&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">23
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">24
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">25
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">26
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">27
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">28
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">29
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">30
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">31
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">32
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">33
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">34
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">35
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">36
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">37
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">38
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">39
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">40
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> [&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>append(&lt;span style="color:#f5a97f">15&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 附加一個元素到尾端&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>extend([&lt;span style="color:#f5a97f">3&lt;/span>,&lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>]) &lt;span style="color:#6e738d;font-style:italic"># 附加一組元素到尾端(如果這個用append的話，會將[3, 9, -1]直接當成單一元素放入)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>insert(&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 先選位置，再給插入值&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#c6a0f6">del&lt;/span> lt[&lt;span style="color:#f5a97f">1&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 砍掉index位置的値，後面遞補&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>remove(&lt;span style="color:#f5a97f">3&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 砍掉對應的值的元素(找不到的話會出錯)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>index(&lt;span style="color:#f5a97f">9&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 找對應的値在串列的索引值&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">9&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> lt &lt;span style="color:#6e738d;font-style:italic"># 在喊在&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">3&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> lt &lt;span style="color:#6e738d;font-style:italic"># 不在喊不在&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>extend([&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>count(&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 計算元素出現次數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>count(&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>count(&lt;span style="color:#f5a97f">2&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>sort() &lt;span style="color:#6e738d;font-style:italic"># 原地排序&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>extend([&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt2 &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#91d7e3">sorted&lt;/span>(lt) &lt;span style="color:#6e738d;font-style:italic"># 另行排序，排完放到lt2，lt不會被改變&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> lt2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">2&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#f5a97f">5&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">9&lt;/span>, &lt;span style="color:#f5a97f">15&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">len&lt;/span>(lt2) &lt;span style="color:#6e738d;font-style:italic"># 取長&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">14&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>蠻多的對吧？&lt;br>
盡量不要死記硬背，嘗試多練習不同的操作變化看看呦！&lt;/p>
&lt;p>接下來介紹tuple(元組)，&lt;br>
tuple可以說是固定版的串列，&lt;br>
一旦決定以後，它本身裡面的元素就無法被單獨修改了！&lt;br>
要使用tuple，我們會用小括號()，當中是空白或用逗號分隔的元素。&lt;br>
要留意的是，無論除非你直接將變數名稱整個指定成別的內容，&lt;br>
否則是無法用像tpl[1] = ‘edit’這樣的東西去修改的！&lt;br>
除此以外，我們也可以用多重指派的方式，&lt;br>
來讓每個元素接取到tuple或list的元素。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> tpl &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> (&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;9&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">123&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> tpl
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>(&lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#f5a97f">3&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;9&amp;#39;&lt;/span>, &lt;span style="color:#f5a97f">123&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> tpl[&lt;span style="color:#f5a97f">1&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> tpl[&lt;span style="color:#f5a97f">1&lt;/span>] &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;&amp;lt;stdin&amp;gt;&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">TypeError&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;tuple&amp;#39;&lt;/span> &lt;span style="color:#91d7e3">object&lt;/span> does &lt;span style="color:#91d7e3;font-weight:bold">not&lt;/span> support item assignment
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a, b, c, d, e &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> tpl &lt;span style="color:#6e738d;font-style:italic"># 對應五個元素，左右兩邊互相對到即可，這種方式也稱為tuple開箱(unpacking)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> b
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> c
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;XD&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;9&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> e
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">123&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>由於不能修改的特性，前面提到list的append/extend等方法tuple都沒有；&lt;br>
但是tuple有幾點好處：&lt;/p>
&lt;ol>
&lt;li>占用空間較少&lt;/li>
&lt;li>tuple的元素不會不小心被動到&lt;br>
除此之外，tuple後續也可以做為字典的輸入使用，&lt;br>
這點下一篇文章會提到。&lt;br>
其他還有一些特別的特性，之後有機會再提吧!&lt;/li>
&lt;/ol>
&lt;p>我們在下半段將介紹另外兩種資料型態：字典(dict)及集合(set)。&lt;/p>
&lt;p>那就明天見啦！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (4) — 型態轉換及字串基礎：叫你印出來不是叫你開印表機阿！</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-4-type-conversion-and-string-basic/</link><pubDate>Fri, 18 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-4-type-conversion-and-string-basic/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (4) — 型態轉換及字串基礎：叫你印出來不是叫你開印表機阿！" />&lt;h2 id="day-04-型態轉換及字串基礎叫你印出來不是叫你開印表機阿">Day 04 型態轉換及字串基礎：叫你印出來不是叫你開印表機阿！
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10238980" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10238980&lt;/a>&lt;/p>
&lt;p>註：本文同步刊載在Medium，若習慣Medium的話亦可去那邊看呦！&lt;/p>
&lt;h3 id="我們先來解答一下昨天的問題">我們先來解答一下昨天的問題。
&lt;/h3>&lt;p>讀者的變數名稱可以自己定義，只要答案正確即可。&lt;br>
(但定義的時候，盡量是能夠表達出這個變數是用來做什麼的會比較好)&lt;br>
第一題的內容很簡單，就是把東西放進去計算，然後print出來。&lt;br>
範例解如下：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> pi&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">3.14&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> r&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">7.77&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#f5a97f">2&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span>pi&lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span>r) &lt;span style="color:#6e738d;font-style:italic"># 周長&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">48.7956&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(pi&lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span>r&lt;span style="color:#91d7e3;font-weight:bold">**&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 面積&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">189.57090599999998&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>請留意到，運算子之間有優先合併順序，這個可以Google一下會有詳盡的列表，&lt;br>
但簡單來說，就像小時候老師教先乘除後加減一樣，&lt;br>
以&lt;strong>pi*r**2&lt;/strong> 這個式子來說，”**”這個運算子會先被優先納入計算，&lt;br>
所以r平方會先算完，再和左邊的pi相乘。&lt;/p>
&lt;p>第二題呢？其實也只是加起來而已。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> pi&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">3.14&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> r1&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">7.77&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> r2&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">5.3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> r3&lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span>&lt;span style="color:#f5a97f">2.5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#f5a97f">2&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span>pi&lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span>(r1&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>r2&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>r3))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">97.7796&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(pi&lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span>(r1&lt;span style="color:#91d7e3;font-weight:bold">**&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>r2&lt;span style="color:#91d7e3;font-weight:bold">**&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>r3&lt;span style="color:#91d7e3;font-weight:bold">**&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">297.398506&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>很簡單吧！&lt;/p>
&lt;p>接下來第三天的部分，我們要來談一下型態轉換及一些字串的操作。&lt;br>
我們昨天已經提到有一些基本常見的型態：&lt;br>
bool, int, float, str，&lt;br>
也許讀者有想到一個問題：&lt;br>
兩個不一樣的型態是怎麼互相轉換的呢？&lt;br>
比方說我們先前在除法的時候，兩個int相除，&lt;br>
是會產生float的(如果不使用整數除法)，&lt;br>
這個就是Python在這當中自動進行了型態轉換的部分。&lt;br>
有些時候，型態轉換則需要我們自己來操作，&lt;br>
比如int和float的互轉，只需要使用int()或float()即可。&lt;br>
我們來看一下int和float轉換的範例：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">float&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 從沒有小數點的int變成帶小數點的float&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#f5a97f">1.0&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 很直觀XD&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#f5a97f">1.6&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 咦? 不是2嗎？&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#f5a97f">1.4&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1.1&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2.1&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 所以是無條件捨棄&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">1.5&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#f5a97f">1&lt;/span>　&lt;span style="color:#6e738d;font-style:italic"># float和int相加&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">2.5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#f5a97f">3.0&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 順序不影響&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">4.0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>int轉換成float以後，就是多加.0在後面就對了！&lt;br>
float轉換成int的話，則是&lt;strong>將小數點後面的東西全數捨棄&lt;/strong> 。&lt;br>
四則運算的話，int和float相遇最後結果會變成float，以求保留較多的資料。&lt;/p>
&lt;p>那bool和int之間的關係呢？0會被當成偽，1會被當成真，&lt;br>
但是其他的數字(0以外的所有數字)也會被當成真呦！&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">bool&lt;/span>(&lt;span style="color:#f5a97f">0&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">False&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">bool&lt;/span>(&lt;span style="color:#f5a97f">1&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">bool&lt;/span>(&lt;span style="color:#f5a97f">3&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">bool&lt;/span>(&lt;span style="color:#91d7e3;font-weight:bold">-&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#f5a97f">True&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#f5a97f">False&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>int還有其他變化，&lt;br>
可以將其轉換成用二進位/八進位/十六進位來表達。&lt;br>
所謂的二進位就是每個位數只有0或1兩種數字，&lt;br>
超過就進一位。&lt;/p>
&lt;p>舉例來說，十進位的7等於二進位的111，&lt;br>
因為111等於1 * 2² + 1 * 2¹ + 1 * 2⁰ = 4+2+1=7&lt;br>
(看不懂這段的，可以搜尋一下二進位，這邊不再贅述)&lt;br>
我們一般用X進位來表達數字時，稱這個X為「基數」。&lt;/p>
&lt;p>在Python中如果數字用10以外的基數來表達時，&lt;br>
會額外做顯示上的處理：&lt;br>
二進位 -&amp;gt; 0b或0B (b代表binary)&lt;br>
八進位 -&amp;gt; 0o或0O (o代表octal)&lt;br>
十六進位 -&amp;gt; 0x或0X (x代表hexadecimal)&lt;br>
舉例來說：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">0b10&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">0b111&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 4+2+1=7&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">7&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">0o11&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 8+1=9&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">9&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#f5a97f">0x1F&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 16+15=31 (A~F分別代表16進位的10~15)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">31&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>上面這些有點枯燥我明白，但請記下來，有些東西將來會用上的XD&lt;/p>
&lt;p>再來談談字串(str)吧！&lt;br>
在Python中，一個字串的資料，是用兩個單引號或兩個雙引號括起來的，&lt;br>
當int, float, bool等型態要轉為str時，&lt;br>
Python只有做一件事情：把它們加進引號中。(真是偷懶XD)&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(&lt;span style="color:#f5a97f">9&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;9&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(&lt;span style="color:#f5a97f">97.1&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;97.1&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(&lt;span style="color:#f5a97f">True&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;True&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">str&lt;/span>(&lt;span style="color:#f5a97f">0o11&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 以其他基數表達的int，仍會先轉回10進位再處理&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;9&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>那反方向呢？&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;9&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">9&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;9.1&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># python會跳出錯誤說：你騙我，它不是int！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Traceback (most recent call last):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> File &lt;span style="color:#a6da95">&amp;#34;&amp;lt;stdin&amp;gt;&amp;#34;&lt;/span>, line &lt;span style="color:#f5a97f">1&lt;/span>, &lt;span style="color:#91d7e3;font-weight:bold">in&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>module&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">ValueError&lt;/span>: invalid literal &lt;span style="color:#c6a0f6">for&lt;/span> &lt;span style="color:#91d7e3">int&lt;/span>() &lt;span style="color:#c6a0f6">with&lt;/span> base &lt;span style="color:#f5a97f">10&lt;/span>: &lt;span style="color:#a6da95">&amp;#39;9.1&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">float&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;9.1&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 這樣總符合了吧！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">9.1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">bool&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;3&amp;#39;&lt;/span>)　&lt;span style="color:#6e738d;font-style:italic"># 因為是0以外的東西，所以會是True&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">True&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>講到這裡，讀者可能會有疑問：&lt;br>
「前面講過print可以將東西印出來，&lt;br>
那我如果要印出字串，但裡面含單引號或雙引號呢？」&lt;br>
問的好！&lt;br>
由於有些特殊字元如單引號，雙引號等會有被拿去用的困擾，&lt;br>
所以當遇到會有特殊含義的字元，&lt;br>
或者要將特定字元轉換用途時，我們可以使用一個反斜線()，&lt;br>
將原先的含義給轉換。&lt;br>
這邊請留意一下，在一般大多數的程式語言來說，&lt;br>
印出(print)通常代表把一些內容，輸出到螢幕上，&lt;br>
可能是程式的命令提示字元，或者別的東西，&lt;br>
但不是印表機！！！&lt;br>
請不要問為什麼我家沒有印表機筆者卻要你印出東西來的問題XD&lt;/p>
&lt;p>比如我們想印出’We will rock you!’ (連同單引號)，&lt;br>
那麼，我們可以這樣子：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\&amp;#39;&lt;/span>&lt;span style="color:#a6da95">We will rock you!&lt;/span>&lt;span style="color:#8aadf4">\&amp;#39;&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 外層的單引號仍然是用來表達字串的開頭跟結尾，但內層的單引號被轉義回一般無特殊含義的單引號&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;We will rock you!&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>其他還有一些常用的轉義字元，但最常用的就是”\n”了，&lt;br>
可以用來做換行的效果！&lt;br>
舉例來說：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;天青色等煙雨 而我在等你&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">炊煙裊裊升起 隔江千萬里&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>天青色等煙雨 而我在等你
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>炊煙裊裊升起 隔江千萬里
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>你要多換幾行？那就多打幾個\n吧！&lt;br>
想同時印出多個字串的話，可以用逗號來連接，Python會幫忙在中間加空格。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(&lt;span style="color:#a6da95">&amp;#39;I&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;feel&amp;#39;&lt;/span>,&lt;span style="color:#a6da95">&amp;#39;good&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 即便換行，feel前面還是有一格空格&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>I
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> feel good
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>再來談談Python中字串的一些常見的操作：&lt;br>
+結合、*複製、[]取字元、[start:end:step]切片、len()取長、split()分割、join()結合&lt;br>
以下是範例：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">16
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">17
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">18
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">19
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">20
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">21
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">22
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">23
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">24
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">25
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">26
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">27
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">28
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">29
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">30
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">31
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">32
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">33
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">34
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">35
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">36
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">37
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#a6da95">&amp;#39;b&amp;#39;&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#a6da95">&amp;#39;c&amp;#39;&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 相加就是串在一起就對了！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;abc&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#a6da95">&amp;#39;apple&amp;#39;&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span>&lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 乘上的正整數相當於重複的次數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;appleapple&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;apple&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a[&lt;span style="color:#f5a97f">3&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 取第3位(從0起算)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;l&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a[&lt;span style="color:#f5a97f">0&lt;/span>:&lt;span style="color:#f5a97f">4&lt;/span>:&lt;span style="color:#f5a97f">1&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 切片slice: 從0開始，到4結束，每次跳1單位&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;appl&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a[&lt;span style="color:#f5a97f">0&lt;/span>:&lt;span style="color:#f5a97f">4&lt;/span>:&lt;span style="color:#f5a97f">2&lt;/span>] &lt;span style="color:#6e738d;font-style:italic"># 切片slice: 從0開始，到4結束，每次跳2單位&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;ap&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">len&lt;/span>(a) &lt;span style="color:#6e738d;font-style:italic"># 取長度&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">len&lt;/span>(a[&lt;span style="color:#f5a97f">0&lt;/span>:&lt;span style="color:#f5a97f">4&lt;/span>:&lt;span style="color:#f5a97f">1&lt;/span>]) &lt;span style="color:#6e738d;font-style:italic"># 剛剛切出的長度是4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">4&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> b &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;An apple a day, keeps the doctor away.&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>split() &lt;span style="color:#6e738d;font-style:italic"># 用括號內的字串來分割，預設是空白字元(換行/空格/位移tab)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;An&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;apple&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;day,&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;keeps&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;the&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;doctor&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;away.&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>split(&lt;span style="color:#a6da95">&amp;#39;,&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 用逗號來分割(留意用來分割的東西會不見)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;An apple a day&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39; keeps the doctor away.&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>split(&lt;span style="color:#a6da95">&amp;#39;.&amp;#39;&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 因為.的右邊沒東西，所以會多一個空字串&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;An apple a day, keeps the doctor away&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> c &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> b&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>split()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> c
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[&lt;span style="color:#a6da95">&amp;#39;An&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;apple&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;a&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;day,&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;keeps&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;the&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;doctor&amp;#39;&lt;/span>, &lt;span style="color:#a6da95">&amp;#39;away.&amp;#39;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">&amp;#39;&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>join(c) &lt;span style="color:#6e738d;font-style:italic"># &amp;#39;字串&amp;#39;.join(要被接起來的串列)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6da95">&amp;#39;An&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">apple&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">a&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">day,&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">keeps&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">the&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">doctor&lt;/span>&lt;span style="color:#8aadf4">\n&lt;/span>&lt;span style="color:#a6da95">away.&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(d) &lt;span style="color:#6e738d;font-style:italic"># 印出來的時候就知道\n是拿來換行了！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>An
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apple
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>a
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>day,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>keeps
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>the
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>doctor
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>away&lt;span style="color:#91d7e3;font-weight:bold">.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>程式碼內的註解應該足夠清楚，除了有幾點需要補充說明。&lt;br>
首先留意到a[3]，在單獨中括號加上單一數字時，&lt;br>
代表從頭開始數到索引值(index)為3的地方，取出那個字元。&lt;br>
注意歐！這個算法中是從0開始數的！&lt;br>
也就是’apple’中的’a’是a[0]，請讀者務必記得從0開始！&lt;br>
就算沒有在異世界生活也一樣XD&lt;/p>
&lt;p>接著看到**[start:end:step]&lt;strong>的切片部分，&lt;br>
它代表著我們可以用定好的規則來取出字串的片段。&lt;br>
其中：&lt;br>
start表示開始的位置；&lt;br>
end表示結束的位置，但是不含end這個位置；&lt;br>
step代表每次移動多少單位。&lt;br>
比方說剛剛的a[0:4:1]，&lt;br>
就是從0開始，到4結束，每次移動1單位，但因為不包含4，&lt;br>
所以只會取到’appl’。&lt;br>
在step為正的情況下，start不寫的話，預設代表從0開始，&lt;br>
而step不寫的話，預設代表每次移動1單位；&lt;br>
所以&lt;/strong>a[0:4:1]也可以寫成a[:4:1]或者a[:4]** ，讀者可以嘗試看看。&lt;br>
同理，end不寫的話代表預設到結束(包含尾端)，&lt;br>
所以如**a[1:]就會是’pple’**。&lt;/p>
&lt;p>此外，slice還有特異功能：當&lt;strong>step是負數&lt;/strong> 的時候，&lt;br>
前面不寫則代表預設從字串尾往字串頭走，&lt;br>
所以如&lt;strong>a[::-1]會是’elppa’，相當於將a反轉&lt;/strong> ；&lt;br>
而&lt;strong>a[4:1:-1]則是’elp’&lt;/strong> 。&lt;/p>
&lt;p>而當start或end是負數的時候，&lt;br>
Python會將負數視作從尾往頭起算，如-1代表倒數第1個字元。&lt;br>
例如&lt;strong>a[-2:0:-1]會是’lpp’&lt;/strong> 。&lt;/p>
&lt;p>最後留意到split()作用過後，&lt;br>
會產生一個用中括號框起來，及逗號分隔的東西，&lt;br>
我們將其稱為&lt;strong>list(串列，或稱列表)&lt;/strong> ，在接下來的文章中我們會介紹到它，&lt;br>
現在只需要知道，它就是一連串列出來的東西即可：&lt;br>
&lt;strong>split會按照分割的字串將目標字串給切分開成列表；&lt;br>
join則會使用給定的字串將一個列表的所有東西按順序連接起來。&lt;/strong>&lt;/p>
&lt;h3 id="好的最後我們來做個練習吧">好的，最後我們來做個練習吧！
&lt;/h3>&lt;ol>
&lt;li>給定字串chs = ‘abcdefghijklmnopqrstuvwxyz’，請印出：&lt;br>
1.1. 從z起算往回頭走，每次step為-2的字串&lt;br>
1.2. 將索引值為16的字元，加上(索引值為14的字元重復2次)，&lt;br>
並用一個空格將前者和字串’有種果汁真好喝~’連接起來。&lt;/li>
&lt;li>已知bin()的方法可以將一個int值用二進位表示並轉為字串，&lt;br>
請嘗試給出36的二進位字串，但須去除’0b’的部分。&lt;/li>
&lt;li>給定&lt;strong>a, b, c = ‘pen’, ‘apple’, ‘pine’&lt;/strong> ，&lt;br>
(註：沒錯，你可以在一行同時生成多個變數，使用逗號隔開即可)&lt;br>
請用a, b, c組合出’penpineappleapplepen’。&lt;/li>
&lt;/ol>
&lt;p>那就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (1) — 緒論：寫在前面</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-1-preface/</link><pubDate>Thu, 17 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-1-preface/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (1) — 緒論：寫在前面" />&lt;h2 id="day-01-緒論寫在前面">Day 01 緒論：寫在前面
&lt;/h2>&lt;p>為了方便大家閱讀，這個系列也存成Medium的list囉！&lt;a class="link" href="https://desolve.medium.com/list/python-6f7985967b68" target="_blank" rel="noopener"
>https://desolve.medium.com/list/python-6f7985967b68&lt;/a>&lt;/p>
&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10237408" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10237408&lt;/a>&lt;/p>
&lt;p>一年又過去啦！&lt;br>
不曉得各位過得如何呢？&lt;br>
在寫了從LeetCode學演算法系列文章後，&lt;br>
&lt;a class="link" href="https://medium.com/@desolution" target="_blank" rel="noopener"
>Medium&lt;/a>上，&lt;br>
陸續也寫滿了百篇(現在是105篇)的LeetCode系列的教學文章，&lt;br>
也有出了兩門從LeetCode學演算法的教學課程。&lt;br>
但想轉職的學生依舊很多，卻常常不得其門而入，&lt;br>
從發問的同學來看，主要還是因為轉職時找不到一個好的入門途徑。&lt;/p>
&lt;p>&lt;strong>對一個想入門程式語言的人來說，也許會有很多弄不懂的問題：&lt;/strong>&lt;/p>
&lt;p>&lt;strong>我想學寫前端網頁，那我該從JavaScript開始嗎？&lt;/strong>&lt;br>
CSS要不要會？要不要先懂一些HTML5的語法？&lt;br>
我該用Vue, React, Angular還是什麼東西？&lt;br>
看了一個範例寫購物車，要碰到資料庫，我是不是該碰一些後端？&lt;/p>
&lt;p>&lt;strong>我想學後端，我該學什麼？&lt;/strong>&lt;br>
SQL?NoSQL?該用什麼程式？該安裝什麼套件？&lt;br>
我要做一個作品，呈現是不是要弄一個網頁？那我是不是該學一些前端？&lt;/p>
&lt;p>&lt;strong>我想寫手機程式，該選Android還是iOS的系統？&lt;/strong>&lt;br>
App層更下面的東西，我該知道嗎？要知道的多深？&lt;/p>
&lt;p>&lt;strong>我想寫一般程式，我該選Java/C++/C#/Python中的哪一個？&lt;/strong>&lt;br>
(僅舉例，沒被列到的別生氣XD)&lt;br>
怎樣應用？怎樣寫出視窗程式？&lt;/p>
&lt;p>&lt;strong>最後，為什麼每個上來都寫Hello World?&lt;/strong>&lt;/p>
&lt;p>入門者最大的問題，就是選項很多，&lt;br>
但他/她不知道這些選項代表什麼，也不知道選擇以後，&lt;br>
該從哪邊開始起步。&lt;/p>
&lt;p>這就是這個系列文章的目的，&lt;br>
筆者會嘗試以自己的觀點來表述，&lt;br>
在眾多程式語言中，Python這個選項的優缺點，&lt;br>
帶你學過一遍Python初學所需知道的東西並練習，&lt;br>
並且指一條Python可能的發展路線給你。&lt;/p>
&lt;p>由於一個人的思慮總有疏漏的時候，&lt;br>
若文章中有不理解或者筆誤/不小心講錯的時候，&lt;br>
歡迎告訴筆者，筆者會再進行修改。&lt;/p>
&lt;p>除此以外，以下是本系列文章的閱讀重點：&lt;br>
&lt;strong>1. 只會列一到兩個選項給你&lt;/strong>&lt;br>
做一件事情的方法有很多種，學Python也是，&lt;br>
如果每個可能性都要列出來，對讀者來說太累了(對筆者也是XD)，&lt;br>
在一般狀況下，筆者會只列一至兩種操作/撰寫方式，&lt;br>
其他的變化或者選項，有興趣的讀者可以再自行深入研究。&lt;/p>
&lt;p>&lt;strong>2. 盡量用容易解釋的方式，整組打包&lt;/strong>&lt;br>
每一個函式都有它的用法，&lt;br>
筆者會盡量將其變得較易理解，&lt;br>
在避免太多定義的狀態下，&lt;br>
將能組在一起的函式形成一起的範例來解釋。&lt;/p>
&lt;p>&lt;strong>3. 練習範例及題目&lt;/strong>&lt;br>
文章中的練習範例，請務必自行打一遍並執行成功才算數(不是複製貼上！)&lt;br>
如果有練習的題目的話，會在隔天給出解答，&lt;br>
但希望讀者當天就嘗試自己做出來，再來看答案呦！&lt;/p>
&lt;p>&lt;strong>4. 前導知識及配備&lt;/strong>&lt;br>
雖然本文不預設讀者有學過程式語言，&lt;br>
但仍希望讀者能擁有一台可以上網的電腦，&lt;br>
以及起碼會下載軟體並安裝。&lt;br>
(恩…就是Next-&amp;gt;Next-&amp;gt;……-&amp;gt;Finished/Done)&lt;/p>
&lt;p>&lt;strong>5. Python適合的讀者&lt;/strong>&lt;br>
&lt;strong>如果你想當前端工程師&lt;/strong> -&amp;gt;&lt;br>
Python+Flask可以做，但主流是JavaScript的系列框架，&lt;br>
請找Web前端相關語言的學習資源，&lt;strong>本篇不適合你&lt;/strong> 。&lt;/p>
&lt;p>&lt;strong>如果你想當後端工程師&lt;/strong> -&amp;gt;&lt;br>
&lt;strong>Python+MongoDB或其他資料庫(NoSQL/SQL的都有)可以做&lt;/strong> ，&lt;br>
其他常見的如Java, Golang, Node.js等也都可以做，&lt;br>
所以你可以先看你將來想要找哪些公司的職缺，&lt;br>
再看看他們要的是否為Python後端。&lt;/p>
&lt;p>&lt;strong>如果你想當韌體工程師&lt;/strong> -&amp;gt;&lt;br>
通常這都是C/C++的工作，&lt;strong>本篇不適合你&lt;/strong> 。&lt;/p>
&lt;p>&lt;strong>如果你想當App工程師&lt;/strong> -&amp;gt;&lt;br>
通常這都是Kotlin/Swift的工作，最多加上比較偷懶的React Native，&lt;br>
或是用Unity3D之類的軟體撰寫，&lt;strong>本篇不適合你&lt;/strong> 。&lt;/p>
&lt;p>&lt;strong>如果你想當網頁爬蟲工程師&lt;/strong> -&amp;gt;&lt;br>
&lt;strong>Python有相關的好用的模組&lt;/strong> 可以使用，&lt;br>
你可以從本篇開始入門基礎，同時可能需要會一些HTML的基礎。&lt;br>
(通常這會跟大數據/輿情分析有關)&lt;/p>
&lt;p>&lt;strong>如果你想當AI/機器學習/深度學習工程師&lt;/strong> -&amp;gt;&lt;br>
雖然也有Java/C++的框架，&lt;br>
但&lt;strong>目前最主流的就是Python&lt;/strong> 了！&lt;br>
你可以從本篇開始入門基礎，&lt;br>
接下來學習Tensorflow/Keras/PyTorch等深度學習框架，&lt;br>
本篇後面有篇幅的話，會再推薦一些適合的學習資源。&lt;/p>
&lt;p>歡迎來到Python的世界，&lt;br>
接下來一個月就讓我們一起加油吧！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (2) — 語言起源及安裝使用：偉大的東西常常是無心插柳柳橙汁</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/</link><pubDate>Thu, 17 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (2) — 語言起源及安裝使用：偉大的東西常常是無心插柳柳橙汁" />&lt;h2 id="day-02-語言起源及安裝使用偉大的東西常常是無心插柳柳橙汁">Day 02 語言起源及安裝使用：偉大的東西常常是無心插柳柳橙汁
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10237509" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10237509&lt;/a>&lt;/p>
&lt;p>第二天的文章，我們來介紹Python的起源和基礎安裝流程。&lt;/p>
&lt;p>Python的創始人是吉多·范羅蘇姆(Guido van Rossum)，&lt;br>
在1989年聖誕節打發時間開發出來的。&lt;br>
後續經過一連串的發展，有興趣的可以Google一下，&lt;br>
我們只需要知道幾個最簡單的點：&lt;/p>
&lt;ol>
&lt;li>主流版本有分Python 2.x和Python 3.x，&lt;br>
但Python 2.x系列目前已經不再維護，&lt;br>
所以如果沒有特別需求(例如使用先前別人用Python 2寫的程式)，&lt;br>
&lt;strong>直接選擇最新的Python 3.x版本&lt;/strong> 即可。&lt;/li>
&lt;li>Python的開發演進標準是根據&lt;strong>PEP系列&lt;/strong> (Python Enhancement Proposals)&lt;br>
一般而言，透過開發社群討論提議後，&lt;br>
納入PEP的S系列(Standards Track PEP)匯總，&lt;br>
最後再進行必要的修改/做出新功能並演進更新。&lt;br>
這中間有可能出現吵不出個結果的狀況，&lt;br>
這時候需要&lt;strong>BDFL(仁慈的獨裁者)&lt;/strong> 來做最後裁決，&lt;br>
首位的仁慈的獨裁者即為Guido本人。&lt;br>
可想而知，這個壓力有點太大了XD&lt;br>
畢竟每次跳出來喊:&lt;br>
&lt;em>「你們不要打了，要打去練舞室打！」&lt;/em>&lt;br>
也是很累的，還要擔心自己撞上砲口QQ&lt;br>
所以Guido後來在2018講說不幹啦！&lt;/li>
&lt;/ol>
&lt;h3 id="接著我們來介紹一下怎麼安裝python吧">接著我們來介紹一下怎麼安裝Python吧！
&lt;/h3>&lt;p>如果是Windows作業系統的話，請至&lt;br>
&lt;a class="link" href="https://www.python.org/downloads/windows/" target="_blank" rel="noopener"
>https://www.python.org/downloads/windows/&lt;/a>&lt;br>
以撰寫當日來說最後一次的release為3.8.5&lt;br>
(Latest Python 3 Release — Python 3.8.5)&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-001.jpg"
width="533"
height="225"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-001_hu06311762cf7e51df903586db76c1749e_11951_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-001_hu06311762cf7e51df903586db76c1749e_11951_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="236"
data-flex-basis="568px"
>&lt;/p>
&lt;p>接著往下拉到底端，如果你的電腦是64位元就請選”x86–64&amp;quot;的選項，&lt;br>
否則請選”x86&amp;quot;的選項。&lt;br>
如果讀者使用Mac或Linux，就請依照各自對應的版本做下載。&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-002.jpg"
width="800"
height="327"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-002_hube8a51e396b180ead822b8ed759f9a21_36214_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-002_hube8a51e396b180ead822b8ed759f9a21_36214_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="244"
data-flex-basis="587px"
>&lt;/p>
&lt;p>下載完成後打開進行安裝，將”Add Python 3.8 to PATH”打勾後，&lt;br>
選擇”Customize installation”。&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-003.jpg"
width="674"
height="415"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-003_hu334ba062f1355c7aad0ca7de10e19d46_39964_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-003_hu334ba062f1355c7aad0ca7de10e19d46_39964_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="162"
data-flex-basis="389px"
>&lt;/p>
&lt;p>-&amp;gt; Next&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-004.jpg"
width="674"
height="417"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-004_hu73a39dab1b38a6943cf7976e925c5714_36039_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-004_hu73a39dab1b38a6943cf7976e925c5714_36039_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="161"
data-flex-basis="387px"
>&lt;/p>
&lt;p>-&amp;gt; 將Install for all users及Precompile standard library都打勾，&lt;br>
並將安裝路徑選擇一個你記得住的名字。&lt;br>
(一般會選在Program Files底下，讀者自訂也可)&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-005.jpg"
width="673"
height="414"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-005_hu10b7602bb0afb2ea8038aaaea9d534ea_43182_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-005_hu10b7602bb0afb2ea8038aaaea9d534ea_43182_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="162"
data-flex-basis="390px"
>&lt;/p>
&lt;p>-&amp;gt; 允許UAC給權限後，進行安裝&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-006.jpg"
width="673"
height="413"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-006_hua42fde14d17ded32dbb9e3446fe80186_36657_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-006_hua42fde14d17ded32dbb9e3446fe80186_36657_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="162"
data-flex-basis="391px"
>&lt;/p>
&lt;p>安裝完畢後(Close結束)，&lt;br>
我們應該要能在命令提示字元下找到Python，先打開命令提示字元：&lt;br>
(Win Key + R -&amp;gt; 輸入cmd後Enter)&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-007.jpg"
width="407"
height="216"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-007_hub828c8be0607ed5ada62641b580038c7_12358_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-007_hub828c8be0607ed5ada62641b580038c7_12358_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="188"
data-flex-basis="452px"
>&lt;/p>
&lt;p>(或者按開始，在搜尋列打cmd後按Enter鍵)&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-008.jpg"
width="390"
height="990"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-008_huc7acc4aa634a44e9ca89f652242fcdd4_10189_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-008_huc7acc4aa634a44e9ca89f652242fcdd4_10189_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="39"
data-flex-basis="94px"
>&lt;/p>
&lt;p>好啦，我知道這條很長XD&lt;/p>
&lt;p>在命令提示字元打入”python -V”，正常的話，&lt;br>
應該會顯示我們剛剛安裝的版本。(3.8.5)&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-009.jpg"
width="563"
height="162"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-009_hua58b5968b38bd9f75f41987bc3ba97bd_14331_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-009_hua58b5968b38bd9f75f41987bc3ba97bd_14331_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="347"
data-flex-basis="834px"
>&lt;/p>
&lt;p>在這個模式下輸入”python”，&lt;br>
可以進入直譯器(REPL Read-Eval-Print-Loop，或稱Python Shell)，&lt;br>
輸入指令或運算會在運算的同時將結果輸出到螢幕上。&lt;br>
(但是一旦離開，所有記錄就會消失了)&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-010.jpg"
width="800"
height="392"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-010_hua552d6ad9bf9b436cc49793ce690d4f8_35638_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-010_hua552d6ad9bf9b436cc49793ce690d4f8_35638_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="204"
data-flex-basis="489px"
>&lt;/p>
&lt;p>輸入”python [檔名]”的話，會嘗試將該檔案做為python的程式碼執行，&lt;br>
通常我們會將副檔名命名為.py&lt;br>
假設我們在現在這個資料夾有一個fromzero.py如下：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-011.jpg"
width="536"
height="82"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-011_hu1141e3cbaba48ca8cdb1b625488f5081_5983_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-011_hu1141e3cbaba48ca8cdb1b625488f5081_5983_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="653"
data-flex-basis="1568px"
>&lt;/p>
&lt;p>那麼，在命令提示字元輸入”python fromzero.py”，&lt;br>
其結果如下：&lt;/p>
&lt;p>&lt;img src="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-012.jpg"
width="395"
height="60"
srcset="https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-012_hu7561161fa045f3c54e328e9ab8a6cbf4_5763_480x0_resize_q75_box.jpg 480w, https://learnwithdesolve.netlify.app/post/learn-python-from-zero-2-origin-and-install/image-012_hu7561161fa045f3c54e328e9ab8a6cbf4_5763_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="658"
data-flex-basis="1580px"
>&lt;/p>
&lt;p>讀者可以照著試打出來，中文想印出的部分可自己亂打沒關係XD&lt;br>
簡單解釋這當中發生什麼事情：&lt;br>
執行一段程式的順序是由第一行一路往下走到最後一行，&lt;br>
所以我們會先看到有一個a，一個b，分別被設定為10跟5，&lt;br>
然後被print(a * b)印出來，&lt;br>
也就是先將結果算出來，再輸出到螢幕上，於是得到50。&lt;br>
第四行則是將前面一串字印出來以後，串接上a和b相乘的結果，&lt;br>
str()的目的，則是將a和b算出來的數字轉換成字串，&lt;br>
這樣才能和前面的字串進行串接。&lt;/p>
&lt;p>初學者可能還不太懂，沒關係，我們後面會再慢慢解釋XD&lt;/p>
&lt;p>那就明天見啦！&lt;/p>
&lt;p>註：&lt;br>
對一般人來說，可能命令提示字元並不是很友善，&lt;br>
因此，建議讀者可以另行安裝IDE來處理，&lt;br>
能夠得到更多方便的提示，操作也比較容易上手。&lt;br>
常見的如&lt;strong>PyCharm&lt;/strong> 或&lt;strong>VSCode&lt;/strong> 均可，安裝部分Google一下應該不會太困難，&lt;br>
這邊就不再贅述了。&lt;br>
或者，讀者想直接在線上作業也可以，&lt;br>
可以使用如 &lt;a class="link" href="https://repl.it/" target="_blank" rel="noopener"
>&lt;strong>https://repl.it/&lt;/strong> &lt;/a> 之類的平台即可。&lt;/p>
&lt;p>後續的文章中，將預設使用者是使用自己的文字編輯器，&lt;br>
如&lt;strong>Notepad++/VSCode/PyCharm/Vim/Atom/&lt;/strong> …等，&lt;br>
把程式碼完成後，使用**”python xxx.py”** 的形式來執行。&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item><item><title>從零開始學Python (3) — 變數、型態、運算子：你的除法不是你的除法</title><link>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-3-variable-type-operator/</link><pubDate>Thu, 17 Sep 2020 00:00:00 +0800</pubDate><guid>https://learnwithdesolve.netlify.app/post/learn-python-from-zero-3-variable-type-operator/</guid><description>&lt;img src="https://learnwithdesolve.netlify.app/img/python-zero.webp" alt="Featured image of post 從零開始學Python (3) — 變數、型態、運算子：你的除法不是你的除法" />&lt;h2 id="day-03-變數型態運算子你的除法不是你的除法">Day 03 變數、型態、運算子：你的除法不是你的除法
&lt;/h2>&lt;p>註：本篇文章同步刊載於iT邦幫忙，為鐵人賽之系列文章。&lt;br>
&lt;a class="link" href="https://ithelp.ithome.com.tw/articles/10237877" target="_blank" rel="noopener"
>https://ithelp.ithome.com.tw/articles/10237877&lt;/a>&lt;/p>
&lt;p>從前從前，有個聰明的小男孩叫高斯，&lt;br>
有天老師有事情要忙，出了一道算術題給全班慢慢寫：&lt;br>
1+2+3+…+100 = ?&lt;br>
誰知道高斯馬上就將這個題目用簡單的乘法給迅速算出來了，&lt;br>
答案是(1+100) * 100 / 2 = 5050。&lt;/p>
&lt;blockquote>
&lt;p>*&lt;strong>這告訴我們，做人不要太白目XD&lt;/strong> *&lt;/p>
&lt;/blockquote>
&lt;p>以下我們使用上一篇文章的直譯器，來試看看Python的計算。&lt;br>
在Python中的四則運算，基本上跟我們所認知的四則運算大部分相同，&lt;br>
那麼，要在Python中計算上面的式子的話，也許你會想這樣寫：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> (&lt;span style="color:#f5a97f">1&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#f5a97f">100&lt;/span>) &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">100&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">/&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">5050.0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>咦？為什麼多一個小數點呢？&lt;br>
事實上，Python中在計算加減乘除的時候，只有除法比較特別，&lt;br>
當使用單斜線的除法時，計算結果會預設帶有小數點，&lt;br>
這種「型態」和原先的整數不同，&lt;br>
在Python中整數稱作int，而帶小數點的數字則稱為float。&lt;br>
所以說，你的除法不是你的除法XD&lt;br>
要取得相除的整數，請使用雙斜線：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> (&lt;span style="color:#f5a97f">1&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#f5a97f">100&lt;/span>) &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">100&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">//&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">5050&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>留意如果這當中你使用了帶小數點的數字，即便使用雙斜線，仍然會得到float的結果。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> (&lt;span style="color:#f5a97f">1&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span>&lt;span style="color:#f5a97f">100&lt;/span>) &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> &lt;span style="color:#f5a97f">100&lt;/span> &lt;span style="color:#91d7e3;font-weight:bold">//&lt;/span> &lt;span style="color:#f5a97f">2.0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">5050.0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>(註：和Python不同，其他如Java/C++等語言，單斜線反而是取整數)&lt;/p>
&lt;p>一般Python常見運算方式，除了加減乘除和整數除法外，&lt;br>
還有幾個常見的如**% (取餘數運算子，如5 % 2會得到1)**&lt;br>
&lt;strong>\ (取冪次，如a\b會得到a的b次方)&lt;/strong>&lt;br>
以及其他很多有的沒有的東西，以後我們有機會用到的時候再行介紹XD&lt;/p>
&lt;p>剛剛提到了&lt;strong>型態(type)&lt;/strong> ，在Python中每個資料都有其型態，&lt;br>
用來表明它是什麼種類的東西，我們可以使用&lt;strong>type()&lt;/strong> 的方法，&lt;br>
簡單列出一些常見的型態：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">type&lt;/span>(&lt;span style="color:#f5a97f">10.0&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 浮點數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#ed8796">‘&lt;/span>&lt;span style="color:#eed49f">float&lt;/span>&lt;span style="color:#ed8796">’&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">type&lt;/span>(&lt;span style="color:#f5a97f">10&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 整數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#ed8796">‘&lt;/span>&lt;span style="color:#eed49f">int&lt;/span>&lt;span style="color:#ed8796">’&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">type&lt;/span>(&lt;span style="color:#ed8796">‘&lt;/span>&lt;span style="color:#f5a97f">25&lt;/span>&lt;span style="color:#ed8796">’&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 字串，可以用兩個單引號或兩個雙引號括住&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#ed8796">‘&lt;/span>&lt;span style="color:#eed49f">str&lt;/span>&lt;span style="color:#ed8796">’&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">type&lt;/span>(&lt;span style="color:#f5a97f">True&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># 布林值，只分成True(真)或False(偽)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#ed8796">‘&lt;/span>&lt;span style="color:#eed49f">bool&lt;/span>&lt;span style="color:#ed8796">’&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">type&lt;/span>(&lt;span style="color:#f5a97f">False&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#ed8796">‘&lt;/span>&lt;span style="color:#eed49f">bool&lt;/span>&lt;span style="color:#ed8796">’&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">type&lt;/span>(&lt;span style="color:#f5a97f">None&lt;/span>) &lt;span style="color:#6e738d;font-style:italic"># None，代表什麼都沒有，通常發生在東西不存在時&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#ed8796">‘&lt;/span>&lt;span style="color:#eed49f">NoneType&lt;/span>&lt;span style="color:#ed8796">’&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>回到我們的1加到100，&lt;br>
上面的公式我們知道，在國小的時候通常被稱為&lt;strong>梯形公式&lt;/strong> ：&lt;br>
&lt;strong>(上底 + 下底) * 高 / 2&lt;/strong>&lt;br>
在1加到100中，由於下底和高相同，所以才會都是100，&lt;br>
那麼今天如果連續要算不同的梯形面積呢？每次重複寫好像有一點點麻煩，&lt;br>
這時候我們可以先將這三個不同的東西寫成「變數」。&lt;br>
&lt;strong>所謂的變數就是會變的數(廢話)&lt;/strong>&lt;br>
&lt;strong>讀者可以想像成一個箱子，這個箱子將用來存放資料，&lt;br>
並且為了知道我們在找哪個箱子，我們會為它貼上標籤並取名。&lt;/strong>&lt;/p>
&lt;p>舉例來說：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> top &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> bottom &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> h &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">100&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> (top &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> bottom) &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> h &lt;span style="color:#91d7e3;font-weight:bold">//&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">5050&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>「變數名稱 = 值」的意義是將等號右邊的值(也可以是運算式)，&lt;br>
存放到貼有等號左邊標籤的箱子中。它並不是我們數學中的兩者相等&lt;/strong>&lt;br>
讀者可以嘗試，如果這時候將bottom改變的話，計算結果應該也會改變：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> bottom &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">200&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> (top &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> bottom) &lt;span style="color:#91d7e3;font-weight:bold">*&lt;/span> h &lt;span style="color:#91d7e3;font-weight:bold">//&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">10050&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">type&lt;/span>(bottom) &lt;span style="color:#6e738d;font-style:italic"># type()的方法也可以拿來看變數&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#c6a0f6">class&lt;/span> &lt;span style="color:#ed8796">‘&lt;/span>&lt;span style="color:#eed49f">int&lt;/span>&lt;span style="color:#ed8796">’&lt;/span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> bottom &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#ed8796">“&lt;/span>XD&lt;span style="color:#ed8796">”&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 改動bottom的值並不會受限於原先的型態 (對了，井字號是註解，包含它及其身後的整行都不會被執行到喲！)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">print&lt;/span>(bottom)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>XD
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>請讀者留意，前面執行bottom=100時，&lt;br>
我們生成了一個名為bottom的變數，&lt;br>
後面執行到bottom=200時，則是生成另一個變數，&lt;br>
再將bottom這個標籤貼到上面去。&lt;br>
在Python中更動內容這件事情相對來說十分自由，&lt;br>
即便現在bottom是整數，&lt;br>
你仍然可以透過前面的賦值來改變成別的東西。(因為這是新的東西)&lt;br>
(如上面最後就改成字串了)&lt;/p>
&lt;p>同時，當我們將兩個變數用等號相連時，&lt;br>
只相當於&lt;strong>將標籤名稱貼到同一個箱子上。&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 4
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 5
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 6
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 7
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 8
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2"> 9
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">10
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">11
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">12
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">13
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">14
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> b &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> a
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> b &lt;span style="color:#6e738d;font-style:italic"># 直譯器中直接打變數名字，可以將其輸出到螢幕上&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">id&lt;/span>(a) &lt;span style="color:#6e738d;font-style:italic"># id()方法，可以將一個變數所存放在的記憶體(就是存箱子的空間)位置印出來&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">140733754578720&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">id&lt;/span>(b) &lt;span style="color:#6e738d;font-style:italic"># 看吧！兩個一模一樣&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">140733754578720&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> a &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">123&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># a的標籤從…..720的位置拔掉，貼到存放有123的新箱子&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">id&lt;/span>(a)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">140733754582496&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#91d7e3">id&lt;/span>(b) &lt;span style="color:#6e738d;font-style:italic"># b的標籤還在原地&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">140733754578720&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> b &lt;span style="color:#6e738d;font-style:italic"># b不改變&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">10&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>講到這邊好像有點多吼？會不會難消化呢？&lt;br>
再加一點點就為今天做個收尾吧！&lt;br>
我們剛剛學到了變數、型態、及運算子，&lt;br>
假設你是班代，要幫系上同學訂書收錢，跟小明收300，跟小華收500……&lt;br>
這時候，你希望有一個變數能夠儲存收款的狀況。&lt;br>
對於第一筆款項也許你會這樣寫：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> total &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> &lt;span style="color:#f5a97f">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> total &lt;span style="color:#91d7e3;font-weight:bold">=&lt;/span> total &lt;span style="color:#91d7e3;font-weight:bold">+&lt;/span> &lt;span style="color:#f5a97f">300&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> total
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">300&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>但太麻煩了，你要寫兩次total，有沒有簡單一點的寫法呢？&lt;br>
有的，那就是「+=」。a += b的效果，等同於a = a + b。&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> total &lt;span style="color:#91d7e3;font-weight:bold">+=&lt;/span> &lt;span style="color:#f5a97f">500&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> total
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">800&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>假定你收完了錢，廠商跟你說我們這次沒有特價了，&lt;br>
所以書錢變為兩倍(WTF?)：&lt;/p>
&lt;div class="highlight">&lt;div style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;">&lt;tr>&lt;td style="vertical-align:top;padding:0;margin:0;border:0;">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">1
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">2
&lt;/span>&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#8087a2">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%">
&lt;pre tabindex="0" style="color:#cad3f5;background-color:#24273a;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> total &lt;span style="color:#91d7e3;font-weight:bold">*=&lt;/span> &lt;span style="color:#f5a97f">2&lt;/span> &lt;span style="color:#6e738d;font-style:italic"># 總共應收款項，只好再去討錢囉！a *= b 和 a = a * b相同&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#91d7e3;font-weight:bold">&amp;gt;&amp;gt;&amp;gt;&lt;/span> total
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f5a97f">1600&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>上面這類型的運算子稱之為&lt;strong>指定運算子&lt;/strong> ，&lt;br>
可以達到省略多寫一次第一個變數的目的，看起來比較簡潔。&lt;br>
&lt;strong>+=, -=, \*=, /=, //=&lt;/strong> …… 讀者可以自行運用。&lt;br>
&lt;strong>特別強調，a = a + b的意義，&lt;br>
是將a + b算完後，置入到貼有a標籤的箱子，&lt;br>
請不要將其當成一般數學意義的等號來看待&lt;/strong>。&lt;/p>
&lt;h3 id="我們來做個練習吧">我們來做個練習吧！
&lt;/h3>&lt;ol>
&lt;li>
&lt;p>假設圓周率為3.14，一個圓的半徑是7.77&lt;br>
請用上面的所學及print()方法，&lt;br>
在直譯器中印出該圓的周長和面積。&lt;br>
(註：print()內可以放計算式子呦！)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>承1，如果有另外兩個圓的半徑分別是5.3和2.5，&lt;br>
請計算出這三個圓的周長的和和總面積。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>那就明天見囉！&lt;/p>
&lt;h2 id="工商時間">工商時間：
&lt;/h2>&lt;p>抽獎活動還在繼續累積人數(現在好像沒有人想抽XD)&lt;br>
在&lt;a class="link" href="https://www.facebook.com/groups/pythontw/permalink/10160354153893438/" target="_blank" rel="noopener"
>&lt;strong>Python Taiwan的連結第100篇的文章&lt;/strong> &lt;/a>底下，&lt;br>
&lt;strong>公開分享到你的臉書、按讚該篇文章、並留言告訴我說，&lt;/strong>&lt;br>
&lt;strong>「你最喜歡這一整個系列的哪一篇？為什麼？」或&lt;br>
「除了從LeetCode學演算法系列以外，&lt;br>
你還想要看到關於什麼方向的文章？」&lt;/strong>&lt;br>
&lt;strong>超過20則留言的話&lt;/strong> (有完成以上步驟的才算)，我們就抽一組&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;br>
課程的免費兌換券進行贈送！&lt;/strong>&lt;/p>
&lt;p>期限嘛…就延長到滿人數吧XDD (不然也沒辦法哈哈)&lt;/p>
&lt;p>容筆者工商一下，&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」&lt;/strong> 開放預購啦！&lt;br>
這次選了40道難度加深的LeetCode題目，&lt;br>
同樣也會細部解說對應的技巧及須要掌握的演算法！&lt;br>
同時這次購買進階篇的話，&lt;br>
額外還加贈**「從Leetcode學演算法｜面試篇」** ！&lt;br>
當中包含了&lt;strong>面試準備須知分享&lt;/strong> ，&lt;strong>及訪談國內外不同經驗的工程師&lt;/strong> ，&lt;br>
讓你不論是&lt;strong>想走前端/後端/一般軟工&lt;/strong> 或者是&lt;strong>想找國外的工作&lt;/strong> ，&lt;br>
是&lt;strong>初學想轉職&lt;/strong> 還是&lt;strong>正在工作&lt;/strong> ，都能夠從中得到收穫呦！&lt;br>
有興趣的朋友可以使用下面的早鳥優惠～&lt;br>
&lt;strong>「從Leetcode學演算法｜進階篇」+「從Leetcode學演算法｜面試篇」&lt;/strong> ：&lt;br>
&lt;a class="link" href="https://bit.ly/advleetcode" target="_blank" rel="noopener"
>https://bit.ly/advleetcode&lt;/a>&lt;/p>
&lt;p>&lt;strong>「從Leetcode學演算法」全套(基礎/進階/面試篇)同捆優惠：&lt;/strong>&lt;br>
&lt;a class="link" href="https://bit.ly/allleetcode" target="_blank" rel="noopener"
>https://bit.ly/allleetcode&lt;/a>&lt;/p></description></item></channel></rss>