<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5664097398013841018</id><updated>2024-10-24T03:31:37.948-07:00</updated><category term="python"/><category term="程式設計"/><category term="hello world"/><category term="onlinejudge"/><category term="IE"/><category term="SSL gae python"/><category term="closing"/><category term="contextlib"/><category term="list"/><category term="proxy"/><category term="pyqt"/><category term="sys.path"/><category term="with as"/><category term="wxpython"/><category term="九九乘法"/><category term="休眠"/><category term="剪刀、石頭、布"/><category term="猜數字"/><category term="省電"/><category term="電腦"/><title type='text'>python 學習手札</title><subtitle type='html'>python學習心得、練習、教學&#xa;易於學習、功能強大，語法清晰易讀，&#xa;方便後續維護，與其它語言結合性強。&#xa;如jython(java)、ironpython(visual studio)，等於可拿別的語言優點來做結合，又有個別稱『膠水語言』</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-115538788370772410</id><published>2018-01-01T19:18:00.001-08:00</published><updated>2018-05-21T05:42:06.884-07:00</updated><title type='text'> win7 右鍵選單，轉換影音檔成mp3</title><content type='html'>&amp;nbsp; 時常會遇到有不錯的mv想轉成mp3上傳到手機來聽，但線上轉檔或相關軟體不是廣告多，就是有收取一些費用，很令人討厭，於是想製做個方便轉換工具！&lt;br /&gt;
&amp;nbsp; &lt;a href=&quot;http://t.umblr.com/redirect?z=http%3A%2F%2Fffmpeg.org%2F&amp;amp;t=MzhjMzU5MWY2N2YxNjFlNTRlM2MwNDQ5ODBlMmFjM2Y4MWRmYWU0MiwxeklMbDhVTA%3D%3D&amp;amp;b=t%3AJ3UZwixLKzdOND9W6ITLyg&amp;amp;p=http%3A%2F%2Ffluorware.tumblr.com%2Fpost%2F12786344562%2Fintegrate-ffmpeg-in-right-click-menu-to-convert&amp;amp;m=1&quot; target=&quot;_blank&quot; title=&quot;FFmpeg&quot;&gt;FFmpeg&lt;/a&gt; 是一個跨平台以命令行形式的影像聲音轉換程式，並且也非常容易使用。&lt;br /&gt;
&lt;br /&gt;
例：&amp;nbsp; &lt;code&gt;ffmpeg -i 來源.fav 目的.mp3&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;所以&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;第一步: 安裝 FFmpeg&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;下載位置： &lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&lt;/code&gt;[32bit] &lt;a href=&quot;http://ffmpeg.zeranoe.com/builds/win32/static&quot; target=&quot;_blank&quot; title=&quot;32bit static ffmeg binaries for Windows&quot;&gt;http://ffmpeg.zeranoe.com/builds/win32/static&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; [64bit]&amp;nbsp;&lt;a href=&quot;http://ffmpeg.zeranoe.com/builds/win64/static&quot; target=&quot;_blank&quot; title=&quot;64bit ffmpeg binaries for Windows&quot;&gt;http://ffmpeg.zeranoe.com/builds/win64/static&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
下載後解壓縮到你想安裝的目錄底下&lt;br /&gt;
&lt;br /&gt;
第二步:&amp;nbsp; 寫一個batch檔&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;C:\ffmpeg\convert2mp3.bat&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;@echo off&lt;br /&gt; setlocal ENABLEDELAYEDEXPANSION&lt;br /&gt; set fName=%1&lt;br /&gt; set ffmpeg=&quot;&lt;b&gt;C:\ffmpeg\bin\ffmpeg.exe&lt;/b&gt;&quot;&lt;br /&gt; &lt;br /&gt; for /f &quot;tokens=* delims= &quot; %%F in (&#39;echo %fName%&#39;) do (&lt;br /&gt; %ffmpeg% -i &quot;%%~fF&quot; -ab &lt;b&gt;192k &lt;/b&gt;&quot;%%~dpnF.mp3&quot;&lt;br /&gt; )&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;pause &lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;code&gt;注意ffmpeg路徑需修改為你電腦安裝路徑！&lt;/code&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;第三步:&amp;nbsp; 加到右鍵選單&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&amp;nbsp;鍵盤 視窗鍵(在ctrl跟alt中間那顆)+ R, 輸入regedit命令&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;註冊檔路徑找到 HKEY_CLASSES_ROOT\*\shell 底下右鍵新增【機碼(K)】「&lt;/code&gt;&lt;code&gt;&lt;code&gt;Convert to mp3」, &lt;/code&gt;&lt;/code&gt;&lt;code&gt;接著又再已新增的「&lt;/code&gt;&lt;code&gt;&lt;code&gt;Convert to mp3」&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt;底下右鍵新增【機碼(K)】「Command」，&lt;/code&gt;在Command底下預設值修改成&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;code&gt; C:\ffmpeg\convert2mp3.bat &quot;%1&quot;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;code&gt;&lt;code&gt;這樣就完成了，相當的簡單！&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjijLUj3oEMHrtDNh6RmhF1zyKNPZSfvFq_m_zAKst3ADMUsWd25s1-F99Z0IzdrefJi_MtUX3skbB0JHIc0gEp0l9WmMr1icTkOtHqdlQYtGuw7834tZNFo2CnzLxl4XLYDVsWS2LI_cx/s1600/regedit01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;767&quot; data-original-width=&quot;1132&quot; height=&quot;216&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjijLUj3oEMHrtDNh6RmhF1zyKNPZSfvFq_m_zAKst3ADMUsWd25s1-F99Z0IzdrefJi_MtUX3skbB0JHIc0gEp0l9WmMr1icTkOtHqdlQYtGuw7834tZNFo2CnzLxl4XLYDVsWS2LI_cx/s320/regedit01.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;code&gt;&lt;code&gt;&lt;code&gt;第四步： 測試轉換影音檔&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;code&gt;&lt;code&gt;&amp;nbsp;可以打開檔案總管找任意影音檔案，點選後按右鍵看是不是有&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;Convert to mp3選項，點擊後，即可讓ffmpeg執行轉換動作。&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJRis7w0mDr0magP6EB7PXuyt01dggV5rakKm-bYt-MEjLUWdngUXYiq40sUtoN1V3NYnNpFarv8yXb5kclrdSZmAmX-66b6o9ZRqY1lKA3P8Ndt-gYiSWvwVFKU4ezNAb-KCp_VWjYTM_/s1600/covert2mp3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;611&quot; data-original-width=&quot;462&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJRis7w0mDr0magP6EB7PXuyt01dggV5rakKm-bYt-MEjLUWdngUXYiq40sUtoN1V3NYnNpFarv8yXb5kclrdSZmAmX-66b6o9ZRqY1lKA3P8Ndt-gYiSWvwVFKU4ezNAb-KCp_VWjYTM_/s320/covert2mp3.png&quot; width=&quot;241&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;code&gt;&lt;code&gt;Good Job!&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/115538788370772410/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2018/01/win7-mp3.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/115538788370772410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/115538788370772410'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2018/01/win7-mp3.html' title=' win7 右鍵選單，轉換影音檔成mp3'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjijLUj3oEMHrtDNh6RmhF1zyKNPZSfvFq_m_zAKst3ADMUsWd25s1-F99Z0IzdrefJi_MtUX3skbB0JHIc0gEp0l9WmMr1icTkOtHqdlQYtGuw7834tZNFo2CnzLxl4XLYDVsWS2LI_cx/s72-c/regedit01.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-8266593536570817970</id><published>2015-09-24T17:09:00.000-07:00</published><updated>2016-01-07T06:31:04.887-08:00</updated><title type='text'>Pascal&#39;s triangle、巴斯卡三角形、楊輝三角形 解法</title><content type='html'>參考來源:&amp;nbsp;&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92%E5%BD%A2&quot; target=&quot;_blank&quot;&gt;楊輝三角形 wiki&lt;/a&gt; &lt;br /&gt;
楊輝三角形，又稱賈憲三角形、帕斯卡三角形、海亞姆三角形，是二項式係數在的一種寫法，形似三角形，在中國首現於南宋楊輝的《詳解九章算術》得名，書中楊輝說明是引自賈憲的《釋鎖算術》，故又名賈憲三角形。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdD98JDunkz6pghWAwtiL_lhci5oDULiye21YeAAKPwgsYoVLt20jiuzt6YaeBEdzm17HbItT-f6_ZHCC3QeQ1vKNKJ61RWP-nzHioOi3PpNQfINr7d8sk84n0CwCVRMlRKgwyaOgE0NCX/s1600/construct.pascal.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdD98JDunkz6pghWAwtiL_lhci5oDULiye21YeAAKPwgsYoVLt20jiuzt6YaeBEdzm17HbItT-f6_ZHCC3QeQ1vKNKJ61RWP-nzHioOi3PpNQfINr7d8sk84n0CwCVRMlRKgwyaOgE0NCX/s1600/construct.pascal.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpkuVF9dQN82fKpbV-tyR1WZyDUJKn8fTonb4clSAYX4AvQHY7N3yNzHBZM1SoJPEhiGBCnFUaTYTOIIBTAqlJpRVQHhyphenhyphen1r0EhRdA0WCvDkoPGNsEZJkOOp4DPKeKgiEUW1HsGGfv2Svkh/s1600/pasc.construct.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpkuVF9dQN82fKpbV-tyR1WZyDUJKn8fTonb4clSAYX4AvQHY7N3yNzHBZM1SoJPEhiGBCnFUaTYTOIIBTAqlJpRVQHhyphenhyphen1r0EhRdA0WCvDkoPGNsEZJkOOp4DPKeKgiEUW1HsGGfv2Svkh/s1600/pasc.construct.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
由圖我們可很明顯的找出規律性: &lt;br /&gt;
一、每列都比前列多一個數&lt;br /&gt;
二、每數都是前列的二數和&lt;br /&gt;
三、頭、尾項都為1 &lt;br /&gt;
四、由網路資料可得知這樣的規律性剛好是 (a+b)&lt;sup&gt;n&lt;/sup&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 二元一次表達式的展開系數表&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;2&quot; cellpadding=&quot;1&quot; style=&quot;width: 520px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;59&quot;&gt;&lt;small&gt;(a+b)&lt;sup&gt;&lt;sup&gt;0 &lt;/sup&gt;&lt;/sup&gt;=&lt;/small&gt;&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;306&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;1&lt;/small&gt;&lt;/div&gt;
&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#ffe8f3&quot; valign=&quot;middle&quot; width=&quot;174&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;1&lt;/small&gt;&lt;/div&gt;
&lt;/td&gt; 
          &lt;/tr&gt;
&lt;tr&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;59&quot;&gt;&lt;small&gt;(a+b)&lt;sup&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/sup&gt;  
            =&lt;/small&gt;&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;306&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;a+b&lt;/small&gt;&lt;/div&gt;
&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#ffe8f3&quot; valign=&quot;middle&quot; width=&quot;174&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;1  
            &amp;nbsp;&amp;nbsp; 1&lt;/small&gt;&lt;/div&gt;
&lt;/td&gt; 
          &lt;/tr&gt;
&lt;tr&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;59&quot;&gt;&lt;small&gt;(a+b)&lt;sup&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt;  
            =&lt;/small&gt;&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;306&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;a&lt;sup&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt;+2ab+b&lt;sup&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt;  
            &lt;/small&gt;&lt;/div&gt;
&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#ffe8f3&quot; valign=&quot;middle&quot; width=&quot;174&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;1  
            &amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; 1&lt;/small&gt;&lt;/div&gt;
&lt;/td&gt; 
          &lt;/tr&gt;
&lt;tr&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;59&quot;&gt;&lt;small&gt;(a+b)&lt;sup&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/sup&gt;  
            =&lt;/small&gt;&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;306&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;a&lt;sup&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/sup&gt;+3a&lt;sup&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt;b+3ab&lt;sup&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt;+b&lt;sup&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/sup&gt;&lt;/small&gt;&lt;/div&gt;
&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#ffe8f3&quot; valign=&quot;middle&quot; width=&quot;174&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;1  
            &amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 1&lt;/small&gt;&lt;/div&gt;
&lt;/td&gt; 
          &lt;/tr&gt;
&lt;tr&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;59&quot;&gt;&lt;small&gt;(a+b)&lt;sup&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/sup&gt;  
            =&lt;/small&gt;&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;306&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;a&lt;sup&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/sup&gt;+4a&lt;sup&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/sup&gt;b+6a&lt;sup&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt;b&lt;sup&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt;+4ab&lt;sup&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/sup&gt;+b&lt;sup&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/sup&gt;&lt;/small&gt;&lt;/div&gt;
&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#ffe8f3&quot; valign=&quot;middle&quot; width=&quot;174&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;1  
            &amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp; 1&lt;/small&gt;&lt;/div&gt;
&lt;/td&gt; 
          &lt;/tr&gt;
&lt;tr&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;59&quot;&gt;&lt;small&gt;(a+b)&lt;sup&gt;&lt;sup&gt;5&lt;/sup&gt;&lt;/sup&gt;  
            =&lt;/small&gt;&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;306&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;a&lt;sup&gt;&lt;sup&gt;5&lt;/sup&gt;&lt;/sup&gt;+5a&lt;sup&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/sup&gt;b+10a&lt;sup&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/sup&gt;b&lt;sup&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt;+10a&lt;sup&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt;b&lt;sup&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/sup&gt;+5ab&lt;sup&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/sup&gt;+b&lt;sup&gt;&lt;sup&gt;5&lt;/sup&gt;&lt;/sup&gt;&lt;/small&gt;&lt;/div&gt;
&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#ffe8f3&quot; valign=&quot;middle&quot; width=&quot;174&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;1  
            &amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp; 1 &lt;/small&gt;&lt;/div&gt;
&lt;/td&gt; 
          &lt;/tr&gt;
&lt;tr&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;59&quot;&gt;&lt;small&gt;(a+b)&lt;sup&gt;&lt;sup&gt;6&lt;/sup&gt;&lt;/sup&gt;  
            =&lt;/small&gt;&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#e6f2ff&quot; valign=&quot;middle&quot; width=&quot;306&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;a&lt;sup&gt;&lt;sup&gt;6&lt;/sup&gt;&lt;/sup&gt;+6a&lt;sup&gt;&lt;sup&gt;5&lt;/sup&gt;&lt;/sup&gt;b+15a&lt;sup&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/sup&gt;b&lt;sup&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt;+20a&lt;sup&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/sup&gt;b&lt;sup&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/sup&gt;+15a&lt;sup&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/sup&gt;b&lt;sup&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/sup&gt;+6ab&lt;sup&gt;&lt;sup&gt;5&lt;/sup&gt;&lt;/sup&gt;+b&lt;sup&gt;&lt;sup&gt;6&lt;/sup&gt;&lt;/sup&gt;  
            &lt;/small&gt;&lt;/div&gt;
&lt;/td&gt; 
            &lt;td align=&quot;center&quot; bgcolor=&quot;#ffe8f3&quot; valign=&quot;middle&quot; width=&quot;174&quot;&gt;&lt;div align=&quot;center&quot;&gt;
&lt;small&gt;1  
            &amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp; 15&amp;nbsp;&amp;nbsp; 20&amp;nbsp;&amp;nbsp; 15&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp; 1&lt;/small&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
再參考了這篇資料:&amp;nbsp; &lt;a href=&quot;http://www.sec.ntnu.edu.tw/Monthly/93%28266-275%29/275/3.pdf&quot; target=&quot;_blank&quot;&gt;巴斯卡三角形的幾個性質&lt;/a&gt;&lt;br /&gt;
看完後，只能說搞數學的不簡單能找出這麼多東西出來，也提供了公式，&lt;br /&gt;
但公式的東西實在很難看懂，有時覺得很簡單的原理，看了論文的公式，&lt;br /&gt;
反而覺得好複雜。&lt;br /&gt;
&lt;br /&gt;
但瞭解越多資訊，越有助解題。&lt;br /&gt;
下列代碼，利用了第c[0]項跟最後一項c[-1]都為1，第c[1]項開始剛好等於前列r-1的c[n]+c[n-1]的和&lt;br /&gt;
# python &lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;def pascalTriangle&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; n &lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;return&lt;/span&gt; 
&lt;span style=&quot;color: #e34adc;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;:&lt;/span&gt;
        row &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;for&lt;/span&gt; i in range&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;:&lt;/span&gt;
            print row 
            p &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; row&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt;                     # p 代表前一列
            &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;for&lt;/span&gt; j in range&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; len&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;row&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;:&lt;/span&gt;        
                row&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;j&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; p&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;j&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt; p&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;j&lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt;
            row&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;append&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; __name__ &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: maroon;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;__main__&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;:&lt;/span&gt;
    pascalTriangle&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;color: #808030;&quot;&gt;列印結果如下: &lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;color: #808030;&quot;&gt;========================&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;color: #808030;&quot;&gt;[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;span style=&quot;color: #808030;&quot;&gt;沒處理空白問題，這樣代碼較方便理解 &lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
另外從網路看另一種利用zip的解法&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;def &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;pascal&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;:&lt;/span&gt;
   &lt;span style=&quot;color: maroon;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;Prints out n rows of Pascal&#39;s triangle&lt;/span&gt;&lt;span style=&quot;background: #dd0000; color: white; font-style: italic; font-weight: bold;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;color: #0000e6;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;It returns False for failure and True for success.&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;&lt;/span&gt;
   row &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt;
   k &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt;
   &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;for&lt;/span&gt; x in range&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #603000;&quot;&gt;max&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;:&lt;/span&gt;
      print row
      row&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;l&lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt;r &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;for&lt;/span&gt; l&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt;r in zip&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;row&lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt;k&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt;k&lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt;row&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt;
   &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;return&lt;/span&gt; n&lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;第二列開始&lt;br /&gt;
row = [1, 1]&lt;br /&gt;
zip(row+[0], [0]+row) -&amp;gt; [(1, 0), (1, 1), (0, 1)]&lt;br /&gt;
[(1, 0), (1, 1), (0, 1)] 每項tuple再相加 -&amp;gt; [1, 2, 1]&lt;br /&gt;
&lt;br /&gt;
第三列開始 row = [1, 2, 1]&lt;br /&gt;
zip(row+[0], [0]+row) -&amp;gt; [(1, 0), (2, 1), (1, 2), (0, 1)]&lt;br /&gt;
[(1, 0), (2, 1), (1, 2), (0, 1)] 一樣相加 -&amp;gt; [1, 3, 3, 1]&lt;br /&gt;
&lt;br /&gt;
最後為練習kotlin 我再將代碼，轉換為kotlin的寫法&lt;br /&gt;
&lt;br /&gt;
// kotlin code&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;fun pascalTriangle&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n&lt;span style=&quot;color: purple;&quot;&gt;:&lt;/span&gt; Int&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
    var row &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; listOf&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    var k &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; listOf&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n &lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;return&lt;/span&gt; 
    &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;i in &lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;n&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
        row&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;forEach &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;print&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;${it.toString().format(5)} &lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
        println&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        row &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;row&lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt;k&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;zip&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;k&lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt;row&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; map &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;it &lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt; it&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;first &lt;span style=&quot;color: #808030;&quot;&gt;+&lt;/span&gt; it&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;second&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
    &lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;
&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;

fun &lt;span style=&quot;color: #400000;&quot;&gt;main&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;args&lt;span style=&quot;color: purple;&quot;&gt;:&lt;/span&gt; Array&lt;span style=&quot;color: #808030;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #603000;&quot;&gt;String&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: purple;&quot;&gt;{&lt;/span&gt;
    pascalTriangle&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: purple;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/8266593536570817970/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2015/09/pascals-triangle.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/8266593536570817970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/8266593536570817970'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2015/09/pascals-triangle.html' title='Pascal&#39;s triangle、巴斯卡三角形、楊輝三角形 解法'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdD98JDunkz6pghWAwtiL_lhci5oDULiye21YeAAKPwgsYoVLt20jiuzt6YaeBEdzm17HbItT-f6_ZHCC3QeQ1vKNKJ61RWP-nzHioOi3PpNQfINr7d8sk84n0CwCVRMlRKgwyaOgE0NCX/s72-c/construct.pascal.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-8385225898267031235</id><published>2014-09-10T17:53:00.000-07:00</published><updated>2016-01-07T06:31:43.341-08:00</updated><title type='text'>河內塔(漢諾塔)算法解析 The tower of hanoi algorithm analysis</title><content type='html'>起源(Origin):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最早發明這個問題的人是&lt;a class=&quot;mw-redirect&quot; href=&quot;http://zh.wikipedia.org/wiki/%E6%B3%95%E5%9C%8B&quot; title=&quot;法國&quot;&gt;法國&lt;/a&gt;&lt;a class=&quot;mw-redirect&quot; href=&quot;http://zh.wikipedia.org/wiki/%E6%95%B8%E5%AD%B8%E5%AE%B6&quot; title=&quot;數學家&quot;&gt;數學家&lt;/a&gt;&lt;a href=&quot;http://zh.wikipedia.org/wiki/%E7%88%B1%E5%BE%B7%E5%8D%8E%C2%B7%E5%8D%A2%E5%8D%A1%E6%96%AF&quot; title=&quot;愛德華·盧卡斯&quot;&gt;愛德華·盧卡斯&lt;/a&gt;。&lt;br /&gt;
傳說印度某間寺院有三根柱子，上串64個金盤。寺院裡的僧侶依照一個古老的預言，以上述規則移動這些盤子；預言說當這些盤子移動完畢，世界就會滅亡。這個傳說叫做&lt;a href=&quot;http://zh.wikipedia.org/wiki/%E6%A2%B5%E5%A4%A9&quot; title=&quot;梵天&quot;&gt;梵天&lt;/a&gt;寺之塔問題(Tower of Brahma puzzle)。但不知道是盧卡斯自創的這個傳說，還是他受他人啟發。&lt;br /&gt;
若傳說屬實，僧侶們需要2&lt;sup&gt;64&lt;/sup&gt; − 1步才能完成這個任務；若他們每秒可完成一個盤子的移動，就需要5849億年才能完成。整個宇宙現在也不過137億年。&lt;br /&gt;
這個傳說有若干變體：&lt;a class=&quot;mw-redirect&quot; href=&quot;http://zh.wikipedia.org/wiki/%E5%AF%BA%E9%99%A2&quot; title=&quot;寺院&quot;&gt;寺院&lt;/a&gt;換成&lt;a class=&quot;mw-redirect&quot; href=&quot;http://zh.wikipedia.org/wiki/%E4%BF%AE%E9%81%93%E9%99%A2&quot; title=&quot;修道院&quot;&gt;修道院&lt;/a&gt;、&lt;a class=&quot;mw-redirect&quot; href=&quot;http://zh.wikipedia.org/wiki/%E5%83%A7%E4%BE%B6&quot; title=&quot;僧侶&quot;&gt;僧侶&lt;/a&gt;換成&lt;a href=&quot;http://zh.wikipedia.org/wiki/%E4%BF%AE%E5%A3%AB&quot; title=&quot;修士&quot;&gt;修士&lt;/a&gt;等等。寺院的地點眾說紛紜，其中一說是位於&lt;a href=&quot;http://zh.wikipedia.org/wiki/%E8%B6%8A%E5%8D%97&quot; title=&quot;越南&quot;&gt;越南&lt;/a&gt;的&lt;a class=&quot;mw-redirect&quot; href=&quot;http://zh.wikipedia.org/wiki/%E6%B2%B3%E5%85%A7&quot; title=&quot;河內&quot;&gt;河內&lt;/a&gt;，所以被命名為「河內塔」。另外亦有「金盤是&lt;a class=&quot;mw-redirect&quot; href=&quot;http://zh.wikipedia.org/wiki/%E5%88%9B%E4%B8%96&quot; title=&quot;創世&quot;&gt;創世&lt;/a&gt;時所造」、「僧侶們每天移動一盤」之類的背景設定。&lt;br /&gt;
佛教中確實有「浮屠」（&lt;a href=&quot;http://zh.wikipedia.org/wiki/%E5%A1%94&quot; title=&quot;塔&quot;&gt;塔&lt;/a&gt;）這種建築；有些浮屠亦遵守上述規則而建。「河內塔」一名可能是由&lt;a href=&quot;http://zh.wikipedia.org/wiki/%E4%B8%AD%E5%8D%97%E5%8D%8A%E5%B3%B6&quot; title=&quot;中南半島&quot;&gt;中南半島&lt;/a&gt;在殖民時期傳入歐洲的。&lt;br /&gt;
&lt;br /&gt;
來源網址: &lt;a href=&quot;http://zh.wikipedia.org/wiki/%E6%B1%89%E8%AF%BA%E5%A1%94&quot;&gt;http://zh.wikipedia.org/wiki/%E6%B1%89%E8%AF%BA%E5%A1%94&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
這個遊戲有 三個柱子，暫以 A&amp;nbsp; B&amp;nbsp; C 代替&lt;br /&gt;
&lt;br /&gt;
目的，要把 A柱上的多個盤子由A 移動到 C 柱&lt;br /&gt;
當一個盤子時， A -&amp;gt; C&lt;br /&gt;
當二個盤子時， A -&amp;gt; B, A -&amp;gt; C, B -&amp;gt; C&lt;br /&gt;
&lt;br /&gt;
解法重點，只要超過二個盤子，都可以想像只有二個盤子&lt;br /&gt;
也就是 n 跟 n-1 個盤子(最低部的盤子跟除了 最底部以外的盤子)&lt;br /&gt;
&lt;br /&gt;
最底部以外的盤子&amp;nbsp; n - 1&amp;nbsp; &lt;br /&gt;
最低部的盤子為&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; n&lt;br /&gt;
&lt;br /&gt;
所以只有三個步驟不斷重複&lt;br /&gt;
&lt;br /&gt;
A -&amp;gt; B&lt;br /&gt;
A -&amp;gt; C&lt;br /&gt;
B -&amp;gt; C &lt;br /&gt;
&lt;br /&gt;
第一步 將 n-1個盤子 A移動到B&lt;br /&gt;
第二步 將 最底部盤子n&amp;nbsp; A移動到B&lt;br /&gt;
第三步 將 n-1個盤子 B移動到C&lt;br /&gt;
&lt;br /&gt;
有圖說明觀念才會清楚些&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/q6RicK1FCUs&quot; width=&quot;420&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
# Python 版本 &lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;pre&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; hanoi&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; A&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;A&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; B&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;B&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; C&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;C&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; n &lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        hanoi&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n&lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; A&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; C&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; B&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Move a Disc from %s to %s&quot;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;%&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;A&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; C&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        hanoi&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n&lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; B&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; A&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; C&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__name__&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;__main__&#39;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
    hanoi&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;How many disks you wanna play? &#39;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
// F# 版本&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;pre&gt;let rec hanoi&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; A&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; B&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; C&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; n &lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt; then
        hanoi&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n&lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; A&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; C&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; B&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        printfn &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Move a Disc from %s to %s&quot;&lt;/span&gt; A C
        hanoi&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;n&lt;span style=&quot;color: #808030;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; B&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; A&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; C&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

hanoi&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;A&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;B&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;C&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/8385225898267031235/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2014/09/tower-of-hanoi-algorithm-analysis.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/8385225898267031235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/8385225898267031235'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2014/09/tower-of-hanoi-algorithm-analysis.html' title='河內塔(漢諾塔)算法解析 The tower of hanoi algorithm analysis'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-7018387781150873873</id><published>2014-07-02T19:53:00.000-07:00</published><updated>2016-01-07T07:02:29.122-08:00</updated><title type='text'>go語言 教學2 條件式If else...switch</title><content type='html'>&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;func&lt;/span&gt; main() {
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;for&lt;/span&gt; i &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;; i &amp;lt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;20&lt;/span&gt;; i&lt;span style=&quot;color: #333333;&quot;&gt;++&lt;/span&gt; {
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; i&lt;span style=&quot;color: #333333;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt; {
   fmt.Println(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;even:&quot;&lt;/span&gt;, i)
  } &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;else&lt;/span&gt; {
   fmt.Println(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;odd:&quot;&lt;/span&gt;, i)
  }
 }
}&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; i&lt;span style=&quot;color: #333333;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;golang if 條件式省略了() 無需括號即可做條件判斷&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;多重條件式&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;func&lt;/span&gt; main() {
 scores &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; []&lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt;{&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;30&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;50&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;60&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;80&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;70&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;90&lt;/span&gt;}
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;for&lt;/span&gt; i &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;; i &amp;lt; &lt;span style=&quot;color: #007020;&quot;&gt;len&lt;/span&gt;(scores); i&lt;span style=&quot;color: #333333;&quot;&gt;++&lt;/span&gt; {
  s &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; scores[i]
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; s&lt;span style=&quot;color: #333333;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;20&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;5&lt;/span&gt; {
   fmt.Printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;score: %d is S\n&quot;&lt;/span&gt;, s)
  } &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; s&lt;span style=&quot;color: #333333;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;20&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;4&lt;/span&gt; {
   fmt.Printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;score: %d is A\n&quot;&lt;/span&gt;, s)
  } &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; s&lt;span style=&quot;color: #333333;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;20&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;3&lt;/span&gt; {
   fmt.Printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;score: %d is B\n&quot;&lt;/span&gt;, s)
  } &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt; s&lt;span style=&quot;color: #333333;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;20&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;2&lt;/span&gt; {
   fmt.Printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;score: %d is C\n&quot;&lt;/span&gt;, s)
  } &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;else&lt;/span&gt; {
   fmt.Printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;score: %d is D\n&quot;&lt;/span&gt;, s)
  }
 }
}&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;對於多個條件情況下，可以在else後，再添加一個 if...else&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;或者改使用switch條件判斷&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;func&lt;/span&gt; main() {
 scores &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; []&lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt;{&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;30&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;50&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;60&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;80&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;70&lt;/span&gt;, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;90&lt;/span&gt;}
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;for&lt;/span&gt; i &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;; i &amp;lt; &lt;span style=&quot;color: #007020;&quot;&gt;len&lt;/span&gt;(scores); i&lt;span style=&quot;color: #333333;&quot;&gt;++&lt;/span&gt; {
  s &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; scores[i]
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;switch&lt;/span&gt; level &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; s &lt;span style=&quot;color: #333333;&quot;&gt;/&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;20&lt;/span&gt;; level {
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;5&lt;/span&gt;:
   fmt.Printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;score: %d is S\n&quot;&lt;/span&gt;, s)
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;4&lt;/span&gt;:
   fmt.Printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;score: %d is A\n&quot;&lt;/span&gt;, s)
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;3&lt;/span&gt;:
   fmt.Printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;score: %d is B\n&quot;&lt;/span&gt;, s)
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;2&lt;/span&gt;:
   fmt.Printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;score: %d is C\n&quot;&lt;/span&gt;, s)
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;default&lt;/span&gt;:
   fmt.Printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;score: %d is D\n&quot;&lt;/span&gt;, s)
  }
 }
} &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;case 後允許有多個條件&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;case 5, 3, 2:&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;如所有條件分不符合，則執行default:後的語句。&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/7018387781150873873/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2014/07/go-2-if-elseswitch.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/7018387781150873873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/7018387781150873873'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2014/07/go-2-if-elseswitch.html' title='go語言 教學2 條件式If else...switch'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-1361018451107183632</id><published>2014-07-02T11:08:00.000-07:00</published><updated>2016-01-07T07:01:25.374-08:00</updated><title type='text'>go語言 教學1 基礎</title><content type='html'>go 語言被譽為這個世代的C語言，其精神也繼承了c語言的優點，少即多，沒有太多花俏的特性，所用到的關鍵字只有二十五個，跟c語言31個、c++89個比較，顯得相當精簡。並行機制也使得go語言，編寫多線程及網路編程都相當容易！&lt;br /&gt;
go語言主要為系統及網路編程而設計， 一些設計要求較為嚴格。導入的模組及聲明的變數，未使用無法通過編譯，go精簡的特性，也導致少了一些新穎好用的特性，如函數式語言的列表推導。&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; [ x for x in range(20) if x % 2]&lt;br /&gt;
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]&lt;br /&gt;
&amp;nbsp;基本語法&lt;br /&gt;
&lt;br /&gt;
go保留了c語言風格，為讓早已熟悉c style的人，減少學習成本，因此語言跟c很相像&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;package&lt;/span&gt; main

&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;import&lt;/span&gt; (
 &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;fmt&quot;&lt;/span&gt;
)

&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;func&lt;/span&gt; main() {
 fmt.Println(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Hello World!&quot;&lt;/span&gt;)
}&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;函數聲明關鍵字func 跟c 一樣需有main()函數做為程式進入點。&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;main() 表示程式一被執行時，就會被執行的位置&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;採用了大括號{} 做為程式縮排判定&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;正確 &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;func&lt;/span&gt; main() {
 fmt.Println(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Hello World!&quot;&lt;/span&gt;)
}&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;錯誤 &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;func&lt;/span&gt; main()&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;{ &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;fmt.Println(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;Hello World!&quot;&lt;/span&gt;)
} &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;golang 編譯時會統一格式輸出&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;編輯器存檔時，也會調用golang的format，做語法編排修正&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;因此在golang上難以看到五花八門的寫法&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;程式語言，只要有地方略有不同，就可能引起爭論，例著名的大括號戰爭或&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;以空白代替大括號…等。任何一種都有不同人馬爭論著。&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;go的做法減少了一些爭論點。&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;go聲明變數的方式為：&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;var i int     // 初始化 &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;var i int = 1 // 初始化並給予初始值&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;i := 1 // 新的聲明方式，go 能自行推導出變數類型&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;s := &quot;hi&quot; // string&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt; &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;go 數字類型聲明為&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;int8 int16 int32 int64 和 uint8 uin16 uin32 uint64 等 &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;改善了c語言長久已來的聲明方式&lt;/pre&gt;
short&lt;br /&gt;
int&lt;br /&gt;
long&lt;br /&gt;
long long&lt;br /&gt;
不同位元機器，所代的位元數將有所不同&lt;br /&gt;
&lt;br /&gt;
假如long 為32位元整數 long long 為64 位元，那麼127位元呢？&lt;br /&gt;
&lt;br /&gt;
所以go 的聲明方式 int32 int64 int128 會較為明確&lt;br /&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;簡單加總例子&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;func&lt;/span&gt; main() {
 sum &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;for&lt;/span&gt; i &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;; i &amp;lt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;10&lt;/span&gt;; i&lt;span style=&quot;color: #333333;&quot;&gt;++&lt;/span&gt; {
  sum &lt;span style=&quot;color: #333333;&quot;&gt;+=&lt;/span&gt; i
 }
 fmt.Printf(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;0 + 2 + 3...9 = %d&quot;&lt;/span&gt;, sum)
}&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;輸出：&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;1 + 2 + 3...10 = 45&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;for 條件式 {&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;    // do something&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;}&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;如省略條件式，則變成while一樣的功能&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;for {&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;   // 無窮迴圈&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;}&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;因此go 沒while 和 do...while 一切由for 包辨 &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;有許多語言for 可用來迭代陣列裡的物件&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;例:&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;#python &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;arr = [1, 2, 3]&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;for i in arr:&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;    print i&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;或者像c#, php裡的foreach語法&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;golang裡則是使用&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;for i, v := range arr {&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;    //do something&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;}&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;range arr 會返回二個值 index, value&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;// example&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;func&lt;/span&gt; main() {
 s &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;I am golang!&quot;&lt;/span&gt;
 arr &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; []&lt;span style=&quot;color: #007020;&quot;&gt;byte&lt;/span&gt;(s)

 fmt.Println(arr)
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;for&lt;/span&gt; i, v &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;range&lt;/span&gt; arr {
  fmt.Println(i, &lt;span style=&quot;color: #007020;&quot;&gt;string&lt;/span&gt;(v))
 }
}&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;[]byte(s) 將字串轉為byte slice&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;arr 內容 &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;[73 32 97 109 32 103 111 108 97 110 103 33] &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;所有字元被變成 byte 數字&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;要顯示為原來英文字，需做轉換&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;for&lt;/span&gt; i, v &lt;span style=&quot;color: #333333;&quot;&gt;:=&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;range&lt;/span&gt; arr {&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;    fmt.Println(i, &lt;span style=&quot;color: #007020;&quot;&gt;string&lt;/span&gt;(v))
}&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;range arr 返回值給 i, v 如想省略不用可以使用 _ 符號&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;_, v 或 i, _&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt; &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;另外需注意的是&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;var i int&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;var j int32&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;同為32位元整數，但是二者之間是無法做運算的，仍需做同類型轉換&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;func&lt;/span&gt; main() {
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;var&lt;/span&gt; i &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int&lt;/span&gt; = &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;100&lt;/span&gt;
 &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;var&lt;/span&gt; j &lt;span style=&quot;color: #333399; font-weight: bold;&quot;&gt;int32&lt;/span&gt; = &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;100&lt;/span&gt;
 fmt.Println(i &lt;span style=&quot;color: #333333;&quot;&gt;+&lt;/span&gt; j)
}&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;編譯警告： &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;invalid operation: i + j (mismatched types int and int32) &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;go也不支持隱式轉換，只能顯示轉換完，再做運算&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;var i int8 = 10&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;var j int32 = 100&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;fmt.Println(i + j)&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;invalid operation: i + j (mismatched types int8 and int32)&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;fmt.Println(int32(i) + j)&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;it&#39;s ok.&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/1361018451107183632/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2014/07/go-1.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/1361018451107183632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/1361018451107183632'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2014/07/go-1.html' title='go語言 教學1 基礎'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-5785940350418354830</id><published>2014-01-16T15:42:00.004-08:00</published><updated>2014-01-16T15:42:50.125-08:00</updated><title type='text'>Python &amp; Java 數字金字塔解法</title><content type='html'>問題:讓電腦列印數字金字塔&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 1 2 1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 2 4 2 1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 2 4 8 4 2 1 &lt;br /&gt;&amp;nbsp;1 2 4 8 16 8 4 2 1&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Java解法:&lt;br /&gt;
我以位移運算解決&lt;br /&gt;
1 2 4 8 16 8 4 2 1&lt;br /&gt;
問題&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
int k = 5;&lt;br /&gt;
&lt;pre class=&quot;brush:java; toolbar: true; auto-links: false;&quot;&gt;for (int i = 0; i &amp;lt; k; i++) {
 System.out.print((1 &amp;lt;&amp;lt; i) + &quot; &quot;);
}&lt;/pre&gt;
會打印 1 2 4 8 16 &lt;br /&gt;&lt;pre class=&quot;brush:java; toolbar: true; auto-links: false;&quot;&gt;for (int j = 0; j &amp;lt; k+1; j++) {
 System.out.print(((1 &amp;lt;&amp;lt; k) &amp;gt;&amp;gt; j) + &quot; &quot;);
}&lt;/pre&gt;
再接著打印 &amp;nbsp;8 4 2 1 &lt;br /&gt;&lt;pre class=&quot;brush:java; toolbar: true; auto-links: false;&quot;&gt;int num = 5;
for (int k = 0; k &amp;lt; num; k++) {
 //printSpace(num-k);
 for (int i = 0; i &amp;lt; k; i++) {
  System.out.print((1 &amp;lt;&amp;lt; i) + &quot; &quot;);
 }
 for (int j = 0; j &amp;lt; k+1; j++) {
  System.out.print(((1 &amp;lt;&amp;lt; k) &amp;gt;&amp;gt; j) + &quot; &quot;);
 }
  System.out.print(&quot;\n&quot;);
 }
}&lt;/pre&gt;
&lt;pre class=&quot;brush:java; toolbar: true; auto-links: false;&quot;&gt;
&lt;/pre&gt;
1 &lt;br /&gt;1 2 1 &lt;br /&gt;1 2 4 2 1 &lt;br /&gt;1 2 4 8 4 2 1 &lt;br /&gt;1 2 4 8 16 8 4 2 1&lt;br /&gt;
&lt;br /&gt;
這樣子只有直角三角形，只要在打印每行前先打印二格空白&quot;&amp;nbsp; &quot; &lt;br /&gt;
就能呈現金字塔了&lt;br /&gt;
完整代碼如下&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java; toolbar: true; auto-links: false;&quot;&gt;public class Pyramid {
 public static void main(String[] args) {
 int num = 5;
 for (int k = 0; k &amp;lt; num; k++) {
  printSpace(num-k);
  for (int i = 0; i &amp;lt; k; i++) {
   System.out.print((1 &amp;lt;&amp;lt; i) + &quot; &quot;);
  }
  for (int j = 0; j &amp;lt; k+1; j++) {
   System.out.print(((1 &amp;lt;&amp;lt; k) &amp;gt;&amp;gt; j) + &quot; &quot;);
  }
   System.out.print(&quot;\n&quot;);
  }
 }
 
 public static void printSpace(int num) {
  for (int s = 0; s &amp;lt; num; s++) {
   System.out.print(&quot;  &quot;);
  }
 }
}&lt;/pre&gt;
&lt;pre class=&quot;brush:java; toolbar: true; auto-links: false;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
因為是先用python做測試，隨便附上python版&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:python; toolbar: true; auto-links: false;&quot;&gt;def pyramid(num):
    for i in range(num):
        print &#39;\0\0&#39;*(num-i),
        for j in range(i):
            print 1&amp;lt;&lt;j for=&quot;&quot; i=&quot;&quot; in=&quot;&quot; k=&quot;&quot; print=&quot;&quot; range=&quot;&quot;&gt;&amp;gt; k,
        print&lt;/j&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/5785940350418354830/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2014/01/python-java.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/5785940350418354830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/5785940350418354830'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2014/01/python-java.html' title='Python &amp; Java 數字金字塔解法'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-5943157590372536594</id><published>2013-12-30T00:38:00.002-08:00</published><updated>2013-12-30T00:39:41.692-08:00</updated><title type='text'>PyQt4 教學3 Regexp 測試器</title><content type='html'>&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;pre&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;Step 1.&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;先建立基本 視窗 &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;# -*- coding: UTF8 -*-&lt;/span&gt;
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; os&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; sys&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; re
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;from&lt;/span&gt; PyQt4&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;QtGui &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;from&lt;/span&gt; PyQt4&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;QtCore &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;class&lt;/span&gt; RegexTest&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;QWidget&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; parent&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: #e34adc;&quot;&gt;super&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__class__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;parent&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setWindowTitle&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;RegexExpress Test&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

        #self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setupUI&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;pre&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__name__&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;__main__&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
    app &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QApplication&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;sys&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;argv&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    main &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; RegexTest&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    main&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;show&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    sys&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;exit&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;app&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;exec_&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;a href=&quot;data:image/png;base64,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&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;data:image/png;base64,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&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;Step 2.&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;我們只需要簡單 添加 三個元件&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;QTextEdit * 2&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;QLineEdit * 1&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;QHBoxLayout *1&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;pre&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;class&lt;/span&gt; RegexTest 添加函數 setupUI&lt;/pre&gt;
&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;
&lt;pre&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;   def&lt;/span&gt; setupUI&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        layout &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QHBoxLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        rightLayout &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QVBoxLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;inputTextEdit &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;outputTextEdit &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;lineEdit &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QLineEdit&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&quot;Type an expression and press Enter&quot;)&lt;/span&gt;

        rightLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;inputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        rightLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;outputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        rightLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;lineEdit&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

        layout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;rightLayout&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;layout&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;
&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,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&quot; /&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; 這樣程式的基本雛形，就已經有了&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;再來我們可以寫個函數，取得&lt;/span&gt;&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;self.inputTextEdit的文字，來做正則語法匹配&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;pre&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;   def&lt;/span&gt; setupUI&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;
        &lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;lineEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;returnPressed&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;connect&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;update&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; update&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;outputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;clear&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
            text &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;inputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;toPlainText&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
            rule &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; unicode&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;lineEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;text&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
            result &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; re&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;findall&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;rule&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; text&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
            self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;outputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;append&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;%s&quot;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;%&lt;/span&gt; result&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;except&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;Exception&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; e&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
            self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;outputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;append&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;
                &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&lt;span style=&quot;color: red;&quot;&gt;%s is invalid!&lt;/span&gt;&quot;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;%&lt;/span&gt; unicode&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;
                                                self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;lineEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;text&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
            self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;outputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;append&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;unicode&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;e&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__name__&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;__main__&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
    app &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QApplication&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;sys&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;argv&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    main &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; RegexTest&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    main&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;show&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    testText &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: dimgrey;&quot;&gt;&quot;&quot;&quot;&lt;/span&gt;
&lt;span style=&quot;color: dimgrey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Beautiful is better than ugly.&lt;/span&gt;
&lt;span style=&quot;color: dimgrey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;translate by &lt;/span&gt;&lt;span style=&quot;color: #7144c4;&quot;&gt;noname.tam@gmail.com&lt;/span&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;color: dimgrey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;16 minutes  37.57.166.156&lt;/span&gt;
&lt;span style=&quot;color: dimgrey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;22 minutes  201.211.193.192&lt;/span&gt;
&lt;span style=&quot;color: dimgrey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;&quot;&quot;&lt;/span&gt;
    main&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;inputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setText&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;testText&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    sys&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;exit&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;app&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;exec_&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,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EuGezLyijDxeRh4vI5c3O78I3PNLZctV3UYP3kl+E18dCAjIzxwZ3bNw7XpeSVVeaVVeaVV+afVL2D0vXn6ZXVCcXVCclV+clV88u7D0ntwj8RbIN+tbdSS284jvIL5R4tEkvvtGL0fuudE5bPY8NzoriSe50ad466FEdnuz3hZSvnDpZyX+nUvZU/YTBgEB+X1EdvcU8GsK+DWFZTWFZTUvv/x6zT25PH4OrzSHV5pTWDq/eO1nqHtkfyD92ip9582+9UY7S78iSz+lLZzku/qWtnmEjc5zC1+OxA8LAgLym46M7llcvlFYVssrr+OV1xVV1L38Suiel19+lV9cnl9cnldUlldUNr+4vPfAz+eeNxv8r1nKzlJehUJExrd+I+myuOXLqywfRMaTlPE7eVfukeVN3/ojcA8IyB8nMrpnaflGUUV9UUV9cWV9cWX9l0L37H755VcFJZUFJZUFJRUFJRUL11be372lW7smim986yVYlreW8qotuGcLntjoJLdjDvHji0huO+f/1h+Be0BA/jiR1T0rN0sqG2C+/Oofgjl1vvzq6+LymqLy6qLyal5Z9eLy9fc3p84WrqoSf5T9AirlrTfaU8phN/XWWz7JLYtZygd5J+cv/YWbOggICMhvPTK659r1W/zqRn51E7+6iV/T9OXXAvfs+fKrr0ur6kur6ksr60oq6q6t3Hh/c4mi1ge5EfmsxMdSNorvI+WtxbdL3FPK+chySjJuFDmHLRxKyhcrsn0Lxxd/uch5SvxuZTlhEBCQ33pkdM/y9VtlNc1ltc3ltc3ltc1fCdyza89XX/+jvLapvLapvKapvLZp+fqt/YffyxoKv8L8vq+GIp/u9/1hQUBAfubI6p4btyvqWivqWivrWyvrWwXu2bHro6++/qa6ob26sb26oa2qoe36zTvvb93SX0/+IP8Nl1gMgYCAgGw/Mrrn+s07VQ3t1Y3tNU3tNU3tX//jmx27P0bt2P3x1//4pq6lq66ls66ls7al68bt1YPH5H737gEBAQEB2U5kdc+tuzVNHbXNHbXNHXUtnQL37Nz98T+++baxrbehraehraexvffmnXtfHD8D3AMCAgICIiUyuufG7dX61q66lq761q761u5/fPPtmntaOgeaOweaO/ubOwdur97/4oQ8cA8ICAgIiJTI6J5bd1ab2nsFdPSuueebb79r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&quot; /&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;Step:&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;基本功能有了後，剩再做一些美化、加強功能的事情&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;標籤: &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;styleString = &quot;&lt;span style=&quot;color: #aaaaff;&quot;&gt;%s&lt;/span&gt;&quot;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;inputLabel = QLabel(styleString % &quot;Input Text:&quot;)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;rightLayout.addWidget(inputLabel)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;控制元件
controlLayout = QHBoxLayout()
self.addBtn = QPushButton(&quot;Add&quot;)
self.removeBtn = QPushButton(&quot;Remove&quot;)
optionLabel = QLabel(&quot;Option:&quot;)
self.option = QComboBox()
self.option.addItem(&quot;findall&quot;)
self.option.addItem(&quot;match&quot;)
controlLayout.addWidget(self.addBtn)
controlLayout.addWidget(self.removeBtn)
controlLayout.addWidget(optionLabel)
controlLayout.addWidget(self.option)
controlLayout.addStretch()&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;基本上都還很陽春，其它功能，留待後面有時間再做補充…&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;現在完整代碼如下: &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;pre&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;# -*- coding: UTF8 -*-&lt;/span&gt;
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; os&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; sys&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; re
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;from&lt;/span&gt; PyQt4&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;QtGui &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;from&lt;/span&gt; PyQt4&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;QtCore &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;class&lt;/span&gt; RegexTest&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;QWidget&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; parent&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: #e34adc;&quot;&gt;super&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__class__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;parent&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setWindowTitle&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;RegexExpress Test&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setupUI&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; setupUI&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        styleString &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&lt;span style=&quot;color: #aaaaff;&quot;&gt;%s&lt;/span&gt;&quot;&lt;/span&gt;
        layout &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QHBoxLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        rightLayout &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QVBoxLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        inputLabel &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QLabel&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;styleString &lt;span style=&quot;color: #808030;&quot;&gt;%&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Input Text:&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;inputTextEdit &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        outputLabel &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QLabel&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;styleString &lt;span style=&quot;color: #808030;&quot;&gt;%&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Result:&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;outputTextEdit &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;lineEdit &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QLineEdit&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Type an expression and press Enter&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;lineEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;selectAll&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

        controlLayout &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QHBoxLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addBtn &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QPushButton&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Add&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;removeBtn &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QPushButton&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Remove&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        optionLabel &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QLabel&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Option:&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;option &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QComboBox&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;option&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addItem&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;findall&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;option&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addItem&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;match&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        controlLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addBtn&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        controlLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;removeBtn&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        controlLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;optionLabel&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        controlLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;option&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        controlLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addStretch&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

        rightLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;inputLabel&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        rightLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;inputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        rightLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;outputLabel&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        rightLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;outputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        rightLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;controlLayout&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        rightLayout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;lineEdit&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        layout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;rightLayout&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;layout&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;lineEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setFocus&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;lineEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;returnPressed&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;connect&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;update&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; update&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;test&#39;&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;outputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;clear&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
            text &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;inputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;toPlainText&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
            rule &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; unicode&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;lineEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;text&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
            result &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; re&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;findall&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;rule&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; text&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
            &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;test&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; result
            self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;outputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;append&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;result&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;except&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;Exception&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; e&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
            self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;outputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;append&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;
                &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;&lt;span style=&quot;color: red;&quot;&gt;%s is invalid!&lt;/span&gt;&quot;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;%&lt;/span&gt; unicode&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;
                                                self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;lineEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;text&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
            self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;outputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;append&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;unicode&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;e&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;


&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__name__&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;__main__&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
    app &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QApplication&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;sys&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;argv&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    main &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; RegexTest&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    main&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;show&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    testText &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: dimgrey;&quot;&gt;&quot;&quot;&quot;&lt;/span&gt;
&lt;span style=&quot;color: dimgrey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Beautiful is better than ugly.&lt;/span&gt;
&lt;span style=&quot;color: dimgrey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;translate by &lt;/span&gt;&lt;span style=&quot;color: #7144c4;&quot;&gt;noname.tam@gmail.com&lt;/span&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;&lt;/span&gt;
&lt;span style=&quot;color: dimgrey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;16 minutes  37.57.166.156&lt;/span&gt;
&lt;span style=&quot;color: dimgrey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;22 minutes  201.211.193.192&lt;/span&gt;
&lt;span style=&quot;color: dimgrey;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;&quot;&quot;&lt;/span&gt;
    main&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;inputTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setText&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;testText&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    sys&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;exit&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;app&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;exec_&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;
&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhUAAAHaCAIAAAA40CzVAAAgAElEQVR4nOy953Ob17noC/0J+ySWVSlZ1SWx2DvRey8EQIAkSKL33nvvvbKKqrYsy+pUsRolUdUlzs4+c+beuXO/5E52vpycZJfY2Sf75n54ARCsomyn7WvMbzAvF9b7goBG68fnedZaL2j2oxtHjx49evTowYMHbYH0W0fee+vIe28d/clbR97bf+S9/Ufe3X/43X2H3mk6+HbTgSN7DxzZ89bhGod27z+0q+nAjj3739zdtH3X3u0792zfueeNHXu279zz5q6mHXv27dz71s6mA7uqHKx13lfvXGVX0449+3fufWvXvoN79h/e89aRvQfebjr0zr5D79ZpOvRO04G39xw4smf/YaDPngNH9h442nTw7aaDy52bDr3TdPDtvQfe3nvg6N4DwMHb1T4H32469E7TQaDD0b0Hju5568ie/Yd37zsE/G67mg7uajq4a9/BXfsO7dp3sEr1pRr7Du1uePf6xZevtv/w7v2Hdu8/tHtfA/urVH/5/Yd37z+0a1/tyvsOAn2qn+utFVduOvQO8KFqv/aR2htVL77it12X2kfY2XRg5963du59a8ee/Tuq/zQHd61566YDDV/p4Xf3H35v/5H39h9+b/lf4a0ju5oO7tizf/uupjd27Hljx543dux+Y8fuN3bueXP3vp1739q171Dt3/Fo9cvZf7j6r7+rafvOPT/esfvH23f9aPvOH23fUWPnj9/c+caOXdt37X5z956dTXt37d+358D+vYfealrD3kNvrWw/0HToQNPhNQDt9VMOvrX34P69B/fvObB/91v7d+/ft2tf066mpl371tC0gp1NTTub9u7Yu3fHnj1v7tnz5u49b+7es33X7u27dr+xc9cbO3b9+M2dP35z54+2L/PjN3e9sWP39p17tu/a++buJuAL37HnrR27923f1fQG8A28Wf0G/tsbP/AD343tVX60feePtu/68Zu7frxj9xs792zf1fTm7n079uzf1XRg174Du/cf2rP/UHUAP3B474HDew5UB/M9+w/VB6WddfbWqLUcefud5tb25tb2lvbOts4uUOXMlcOHD+/du/eto++1dvaUpmaevvyyxhdPXnzx5MXnSy8+X3r+2dLzl4+fvXz89AXAo6cvHj19/nDp2eLjpw8eLd1/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&quot; /&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/5943157590372536594/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2013/12/pyqt4-3-regexp.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/5943157590372536594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/5943157590372536594'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2013/12/pyqt4-3-regexp.html' title='PyQt4 教學3 Regexp 測試器'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-6136993956924812427</id><published>2013-12-27T22:47:00.000-08:00</published><updated>2014-02-04T04:37:03.065-08:00</updated><title type='text'>python 小技巧 try except 捕捉錯誤時，列印錯誤行數</title><content type='html'>import sys&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;pre&gt;&lt;pre&gt;sys&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;exc_info&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;) 返回一個tuple，能取得 (type, value, traceback)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;例:&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;gt;&amp;gt;&amp;gt; sys.exc_info()
(&lt;class ueue.empty=&quot;&quot;&gt;, Empty(), &lt;traceback 0x000000000265d508=&quot;&quot; at=&quot;&quot; object=&quot;&quot;&gt;) &lt;/traceback&gt;&lt;/class&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;我取出 traceback 出來用 &lt;/span&gt;&lt;/pre&gt;
&lt;span style=&quot;color: #808030;&quot;&gt;traceback = &lt;/span&gt;sys&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;exc_info&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&lt;/span&gt;[2]&lt;/pre&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;pre&gt;而 traceback&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;tb_lineno 能列印錯誤行數&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;所以我將程式改寫並包裝成一個函數來使用&lt;/pre&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;pre&gt;traceback(err) 顯示錯誤的時間、錯誤訊息，錯誤的所在行數 &lt;/pre&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;pre&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; sys&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; time

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; traceback&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;err&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
    now &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; time&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;strftime&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;%H:%M:%S&#39;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; time&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;localtime&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;time&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;time&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    traceback &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; sys&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;exc_info&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;print&lt;/span&gt; now&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; err&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;exception in line&#39;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; traceback&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;tb_lineno&lt;/pre&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;&quot; src=&quot;data:image/png;base64,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&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/6136993956924812427/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2013/12/python-try-except.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/6136993956924812427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/6136993956924812427'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2013/12/python-try-except.html' title='python 小技巧 try except 捕捉錯誤時，列印錯誤行數'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-6309070033594237823</id><published>2013-12-02T12:42:00.001-08:00</published><updated>2014-02-04T04:37:39.807-08:00</updated><title type='text'>PyQt4 教學3 QThread 多線程</title><content type='html'>多線程python 已有 threading, pyqt 又有 QThread, 一開始都容易有疑問，二者有何不同？應該那一個比較對，我是覺得二者皆可用，網上曾看過有人說，應儘量用 python 本身的 threading, QThread 是原本針對 C++而寫。&lt;br /&gt;
&lt;br /&gt;
任務量較少的情況，我會直接用 threading, 任務量大且需向其它gui 物件傳遞訊息的情況，我會用QThread&lt;br /&gt;
&lt;br /&gt;
這篇是寫PyQt，所以這邊我也只寫 QThread部份&lt;br /&gt;
&lt;br /&gt;
會想使用QThread，我所遇到的情況，是向網頁，抓取資料，又遇網路過慢，延遲過久造成Gui介面等待過久，介面會卡卡、頓頓的。&lt;br /&gt;
&lt;br /&gt;
首先先寫介面，然後點擊 startBtn 可以測試 無線程情況下，圖形介面是不是卡卡的&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiuB1H62o4aJCPDt1RlCS2QZ_0wdtY8vIQ5V3QhC_eI2nUU7bhNfPzP2uoLdeeWkTWHGMZtnjcP_3xkHtBx5AXAjs1aoyjX_5tqldmpE9s1vUwL9KNIED2l8Jbacg0VTz6lGP6m6jIJbRM/s1600/%E5%9C%96%E7%89%87+1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiuB1H62o4aJCPDt1RlCS2QZ_0wdtY8vIQ5V3QhC_eI2nUU7bhNfPzP2uoLdeeWkTWHGMZtnjcP_3xkHtBx5AXAjs1aoyjX_5tqldmpE9s1vUwL9KNIED2l8Jbacg0VTz6lGP6m6jIJbRM/s1600/%E5%9C%96%E7%89%87+1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;pre&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;# -*- coding: UTF8 -*-&lt;/span&gt;
&lt;pre&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; sys
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; urllib2
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;from&lt;/span&gt; PyQt4&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;QtGui &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;from&lt;/span&gt; PyQt4&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;QtCore &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;class&lt;/span&gt; Window&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;QWidget&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; parent&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: #e34adc;&quot;&gt;super&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__class__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;parent&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        layout &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QVBoxLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        hbox &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QHBoxLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
                                   
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;edit &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;startBtn &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QPushButton&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Start&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;stopBtn &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QPushButton&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Stop&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        
        hbox&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addStretch&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        hbox&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;startBtn&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        hbox&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;stopBtn&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        
        layout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;edit&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        layout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;hbox&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;layout&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    
        &lt;span style=&quot;color: dimgrey;&quot;&gt;# SIGNAL&amp;amp;SLOT&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;startBtn&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;clicked&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;connect&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;test&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
                
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; test&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        url &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;http://blog.sina.com.cn/&#39;&lt;/span&gt;
        html &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; urllib2&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;urlopen&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;url&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;read&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        length &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;html&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;edit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;append&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Url:%s Content:%s&quot;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;%&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;url&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; length&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__name__&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;__main__&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
    app &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QApplication&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;sys&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;argv&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    window &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; Window&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    window&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;show&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    sys&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;exit&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;app&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;exec_&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;加入線程&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;pre&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;class&lt;/span&gt; Worker&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;QThread&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;    
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; parent&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: #e34adc;&quot;&gt;super&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__class__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;parent&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;url &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;http://blog.sina.com.cn/&#39;&lt;/span&gt;
        
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; run&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        html &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; br&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;urlopen&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;url&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;read&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        length &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;html&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;emit&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;SIGNAL&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;length&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;url&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;length&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;success&#39;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;pre&gt;&lt;pre&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;emit&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;SIGNAL&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;length&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;url&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;length&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;當線程完成任務時，我們請線程發送訊號&lt;/span&gt;&lt;pre&gt;&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&quot;length&quot;，&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;並傳遞url及所抓取網頁的資料大小&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;/pre&gt;
&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;主程式添加&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;pre&gt;&lt;pre&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;class&lt;/span&gt; Window&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;QWidget&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; parent&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: #e34adc;&quot;&gt;super&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__class__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;parent&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;              .&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;               .&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;               . &lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&lt;/span&gt;        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;work &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; Worker&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        &lt;span style=&quot;color: dimgrey;&quot;&gt;# SIGNAL&amp;amp;SLOT&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;startBtn&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;clicked&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;connect&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;start&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;connect&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;work&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; SIGNAL&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;length&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; 
                     self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;updateUI&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; start&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;work&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;start&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; updateUI&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; url&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; length&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;edit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;append&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Url:%s Content:%s&quot;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;%&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;url&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; length&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;pre&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;connect&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;work&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; SIGNAL&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;length&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; 
                     self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;updateUI&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;主程式這邊接收剛線程傳遞出來的資料&quot;length&quot; &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;現在我們多添加一點任務給線程&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;import lxml.html as H&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;線程改寫成&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;pre&gt;&lt;pre&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;class&lt;/span&gt; Worker&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;QThread&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;    
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; parent&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: #e34adc;&quot;&gt;super&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__class__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;parent&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;url &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;http://blog.sina.com.cn/&#39;&lt;/span&gt;
        
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; run&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;url &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;http://blog.sina.com.cn/&#39;&lt;/span&gt;
        html &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; urllib2&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;urlopen&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;url&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;read&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        doc &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; H&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;document_fromstring&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;html&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        urlList &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; doc&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;xpath&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;//a/@href&#39;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;for&lt;/span&gt; i &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;range&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
            url &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; urlList&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;i&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt;
            html &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; urllib2&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;urlopen&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;url&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;read&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
            length &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;html&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
            self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;emit&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;SIGNAL&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;length&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; url&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;length&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;success&#39;&lt;/span&gt;&lt;/pre&gt;
&lt;span style=&quot;color: #0000e6;&quot;&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;pre&gt;&lt;pre&gt;&lt;pre&gt;doc &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; H&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;document_fromstring&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;html&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
urlList &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; doc&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;xpath&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;//a/@href&#39;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;這邊我們用 lxml.html  xpath語法 取得了，所有文章連結&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;讓線程去跑十篇文章。&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;在跑文章時候，我們希望避免重複按下startBtn&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;應修改&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;pre&gt;&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;   def&lt;/span&gt; start&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;work&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;start&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;startBtn&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setEnabled&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;False&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;/pre&gt;
&lt;/pre&gt;
在任務一執行時，先關閉 &lt;br /&gt;
&lt;pre style=&quot;background: #ffffff; color: black;&quot;&gt;&lt;pre&gt;&lt;pre&gt;&lt;pre&gt;&lt;pre&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;startBtn&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;任務完成時，再開啟 self.startBtn&lt;/pre&gt;
&lt;pre&gt;主程式添加以下代碼&lt;/pre&gt;
&lt;pre&gt;&lt;pre&gt;        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;connect&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;work&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; SIGNAL&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;finished()&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; 
                     self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;finished&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; finished&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;startBtn&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setEnabled&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQxWp5FIJLjrRtGHbzRvgXpIr66bPjfeKVC_cj6gcuHL7Hbd4zsWnU2scd9V_yX5PKX8bfR2elyMKzS7Y-37InsLq9-QsBDOELc7Vr-PnRHQDxrRe4mmTjvv0ajjy88fRRXPmOMWhWppqZ/s1600/%E5%9C%96%E7%89%87+2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQxWp5FIJLjrRtGHbzRvgXpIr66bPjfeKVC_cj6gcuHL7Hbd4zsWnU2scd9V_yX5PKX8bfR2elyMKzS7Y-37InsLq9-QsBDOELc7Vr-PnRHQDxrRe4mmTjvv0ajjy88fRRXPmOMWhWppqZ/s1600/%E5%9C%96%E7%89%87+2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;color: #808030;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&amp;nbsp;那如果我們希望執行當中，停止任務呢？&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;QMutex() 上鎖吧！&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;最後整個程式代碼如下: &lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;pre&gt;&lt;span style=&quot;color: dimgrey;&quot;&gt;# -*- coding: UTF8 -*-&lt;/span&gt;
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; sys
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; lxml&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;html as H
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; urllib2
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;from&lt;/span&gt; PyQt4&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;QtGui &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;
&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;from&lt;/span&gt; PyQt4&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;QtCore &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;*&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;class&lt;/span&gt; Window&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;QWidget&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; parent&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: #e34adc;&quot;&gt;super&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__class__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;parent&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        layout &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QVBoxLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        hbox &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QHBoxLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
                                   
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;edit &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QTextEdit&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;startBtn &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QPushButton&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Start&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;stopBtn &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QPushButton&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Stop&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        
        hbox&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addStretch&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        hbox&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;startBtn&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        hbox&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;stopBtn&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        
        layout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addWidget&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;edit&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        layout&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;addLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;hbox&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setLayout&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;layout&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        &lt;span style=&quot;color: dimgrey;&quot;&gt;#&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;work &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; Worker&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        &lt;span style=&quot;color: dimgrey;&quot;&gt;# SIGNAL&amp;amp;SLOT&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;startBtn&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;clicked&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;connect&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;start&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;stopBtn&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;clicked&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;connect&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;stop&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;connect&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;work&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; SIGNAL&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;length&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; 
                     self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;updateUI&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;connect&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;work&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; SIGNAL&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;finished()&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; 
                     self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;finished&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; start&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;work&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;start&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;startBtn&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setEnabled&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;False&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; updateUI&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; url&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; length&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;edit&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;append&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;Url:%s Content:%s&quot;&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;%&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;url&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; length&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; finished&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;startBtn&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setEnabled&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; stop&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;work&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;stop&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;startBtn&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;setEnabled&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;class&lt;/span&gt; Worker&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;QThread&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;    
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; parent&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: #e34adc;&quot;&gt;super&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__class__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;parent&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;stoped &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;False&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;mutex &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QMutex&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; run&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        with QMutexLocker&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;mutex&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
            self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;stoped &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;False&lt;/span&gt;
        self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;url &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;http://blog.sina.com.cn/&#39;&lt;/span&gt;
        html &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; urllib2&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;urlopen&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;url&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;read&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        doc &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; H&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;document_fromstring&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;html&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        urlList &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; doc&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;xpath&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;//a/@href&#39;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;for&lt;/span&gt; i &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;range&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
            url &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; urlList&lt;span style=&quot;color: #808030;&quot;&gt;[&lt;/span&gt;i&lt;span style=&quot;color: #808030;&quot;&gt;]&lt;/span&gt;
            &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;stoped&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
                &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;return&lt;/span&gt; 
            html &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; urllib2&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;urlopen&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;url&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;read&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
            length &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;html&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
            self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;emit&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;SIGNAL&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;length&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; url&lt;span style=&quot;color: #808030;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;length&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
        &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;print&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&#39;success&#39;&lt;/span&gt;
    
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; stop&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        with QMutexLocker&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;mutex&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
            self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;stoped &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;True&lt;/span&gt;
    
    &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;def&lt;/span&gt; isStop&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
        with QMutexLocker&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;mutex&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
            &lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;return&lt;/span&gt; self&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;stoped

&lt;span style=&quot;color: maroon; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;__name__&lt;/span&gt; &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0000e6;&quot;&gt;&quot;__main__&quot;&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;:&lt;/span&gt;
    app &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; QApplication&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;sys&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;argv&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    window &lt;span style=&quot;color: #808030;&quot;&gt;=&lt;/span&gt; Window&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    window&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;show&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;
    sys&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #e34adc;&quot;&gt;exit&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;app&lt;span style=&quot;color: #808030;&quot;&gt;.&lt;/span&gt;exec_&lt;span style=&quot;color: #808030;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #808030;&quot;&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;/pre&gt;
&lt;/pre&gt;
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/6309070033594237823/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2013/12/pyqt4-3-qthread.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/6309070033594237823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/6309070033594237823'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2013/12/pyqt4-3-qthread.html' title='PyQt4 教學3 QThread 多線程'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiuB1H62o4aJCPDt1RlCS2QZ_0wdtY8vIQ5V3QhC_eI2nUU7bhNfPzP2uoLdeeWkTWHGMZtnjcP_3xkHtBx5AXAjs1aoyjX_5tqldmpE9s1vUwL9KNIED2l8Jbacg0VTz6lGP6m6jIJbRM/s72-c/%E5%9C%96%E7%89%87+1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-33666283779774124</id><published>2013-09-22T20:10:00.002-07:00</published><updated>2013-09-22T20:10:39.167-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pyqt"/><title type='text'>PyQt4 教學2</title><content type='html'>時常安裝軟體完後，需要設定環境變數 Path，而window的設定環境感覺很麻煩，好像沒快捷鍵或指令直接呼叫，得『電腦』→右鍵『內容』→『進階電腦系統設定』→『環境變數』，才能進行設定。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinGUu08-IA83rEZSDQGHPQAX37DLdGz0qbF8L9djZEciKIcPm2m1narPYMOnYecl6mCLZsFc5XGSOtdH7oVX2STl8vFBE4cVUTM7TBOnXo2x5yAes4Rd4w6duQeA7Qfz_XaRojTbEk2Q9t/s1600/2013-09-23_040839.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;244&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinGUu08-IA83rEZSDQGHPQAX37DLdGz0qbF8L9djZEciKIcPm2m1narPYMOnYecl6mCLZsFc5XGSOtdH7oVX2STl8vFBE4cVUTM7TBOnXo2x5yAes4Rd4w6duQeA7Qfz_XaRojTbEk2Q9t/s320/2013-09-23_040839.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
所以想寫個圖形介面，來做快速設定。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
第一步: 先設計介面&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguFbBWC1pDeyl283HikszA2Cpjj-giLuCRlNDj0JjcJ187F3HgYGj92L1L8O06HlZhyYgcL5vxx8UY_UaILSm5ZgwTnC6ksw5wefgUMa5lJ8TtgbmvCDaU36Md3mdx6JPn2TNzoXGwDI3I/s1600/2013-09-23_041050.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;129&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguFbBWC1pDeyl283HikszA2Cpjj-giLuCRlNDj0JjcJ187F3HgYGj92L1L8O06HlZhyYgcL5vxx8UY_UaILSm5ZgwTnC6ksw5wefgUMa5lJ8TtgbmvCDaU36Md3mdx6JPn2TNzoXGwDI3I/s320/2013-09-23_041050.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
這是原先 window sample&lt;br /&gt;
&lt;br /&gt;
所以可以很簡單的就寫出&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-style: italic;&quot;&gt;# -*- coding: UTF8 -*-&lt;/span&gt;
&lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;import&lt;/span&gt; os, sys, win32api, win32con, _winreg
&lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;from&lt;/span&gt; PyQt4.QtCore &lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;import&lt;/span&gt; *
&lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;from&lt;/span&gt; PyQt4.QtGui &lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;import&lt;/span&gt; *

&lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;class&lt;/span&gt; EditEnvironmentDlg(QDialog):
    &lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;def&lt;/span&gt; __init__(self, parent=None):
        super(self.__class__, self).__init__(parent)
        title =  &lt;span style=&quot;color: blue;&quot;&gt;u&quot;編輯系統變數&quot;&lt;/span&gt; 
        self.setWindowTitle(title)
        nameLabel = QLabel(&lt;span style=&quot;color: blue;&quot;&gt;u&quot;變數名稱:&quot;&lt;/span&gt;)
        self.nameEdit = QLineEdit()
        valueLabel = QLabel(&lt;span style=&quot;color: blue;&quot;&gt;u&quot;變數值:&quot;&lt;/span&gt;) 
        valueLabel.setAlignment(Qt.AlignRight)
        buttonBox = QDialogButtonBox(QDialogButtonBox.Ok|
                                     QDialogButtonBox.Cancel)
        grid = QGridLayout()
        grid.addWidget(nameLabel, &lt;span style=&quot;color: blue;&quot;&gt;0&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;0&lt;/span&gt;) 
        grid.addWidget(self.nameEdit, &lt;span style=&quot;color: blue;&quot;&gt;0&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;1&lt;/span&gt;) 
        grid.addWidget(valueLabel, &lt;span style=&quot;color: blue;&quot;&gt;1&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;0&lt;/span&gt;) 
        self.valueEdit = QLineEdit()
            
        grid.addWidget(self.valueEdit, &lt;span style=&quot;color: blue;&quot;&gt;1&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;1&lt;/span&gt;) 
        grid.addWidget(buttonBox, &lt;span style=&quot;color: blue;&quot;&gt;2&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;1&lt;/span&gt;)
        self.setLayout(grid)
        
&lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;if&lt;/span&gt; __name__ == &lt;span style=&quot;color: blue;&quot;&gt;&quot;__main__&quot;&lt;/span&gt;:
    &lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;import&lt;/span&gt; sys 
    app = QApplication(sys.argv)
    dialog = EditEnvironmentDlg()
    dialog.show()
    sys.exit(app.exec_())
&lt;/pre&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi95AN1-26TrI9MMz_b7G54CC7xp1TlDYUDbIcVN9H5ymCCs8_tfDK_FGmDuuFnkm5pbHuhrCtIVsTkW_kubK739M1QMdXjA0YD7gXszJPHsK2hjkCVqfMT1kxh8ur63RjunEo5l2HjAQKH/s1600/2013-09-23_095051.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi95AN1-26TrI9MMz_b7G54CC7xp1TlDYUDbIcVN9H5ymCCs8_tfDK_FGmDuuFnkm5pbHuhrCtIVsTkW_kubK739M1QMdXjA0YD7gXszJPHsK2hjkCVqfMT1kxh8ur63RjunEo5l2HjAQKH/s1600/2013-09-23_095051.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
為了讓各個物件能整齊排列，我們用到了 QGridLayout 網狀佈局&lt;br /&gt;
沒用這個就得一一為各個物件設定座標，這樣是很麻煩的一件事&lt;br /&gt;
所以有了 grid 就變得很方便又美觀！&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot; style=&quot;width: 303px;&quot;&gt;
  &lt;tbody&gt;
&lt;tr&gt;
    &lt;td&gt;nameLabel(0, 0) &lt;/td&gt;
    &lt;td&gt;self.nameEdit(0, 1) &lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
    &lt;td&gt;valueLabel(1, 0) &lt;/td&gt;
    &lt;td&gt;self.valueEdit(1, 1) &lt;/td&gt;
  &lt;/tr&gt;
&lt;tr&gt;
    &lt;td&gt;&lt;/td&gt;
    &lt;td&gt;buttonBox(2, 1)&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
第二步 取出環境變數:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;import&lt;/span&gt; os, sys, win32api, win32con, _winreg&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;python 有 _winreg 可以很方便幫我們操作 註冊表的查詢、修改&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;
&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;但我在修改時遇到 [WINDOWS Error 5] 無法存取&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;
&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;權限被擋了，所以不得以改用 win32api, win32con 來做操作&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;
&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;_winreg 語法是比較簡單，但要修改的位置有權限問題，只好&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;先暫時用 win32api, win32con&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;
&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;首先我們可以用 python IDLE 先試試是不是能查詢到我們要的&lt;/pre&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPW_EzI0D2xPAG37vVZaCtA7PJNdpE6BJHwJ19BEJJ7Iyb5XpUOpgSE8cNKpaPNL8efDq5r8BqYzpnaQt1GtlQYDFvYdpdag3UvXPTpACcGSwMeWUrVaw2QmpsVkKO0sZmJ72DSBjXfEuG/s1600/2013-09-23_101124.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;489&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPW_EzI0D2xPAG37vVZaCtA7PJNdpE6BJHwJ19BEJJ7Iyb5XpUOpgSE8cNKpaPNL8efDq5r8BqYzpnaQt1GtlQYDFvYdpdag3UvXPTpACcGSwMeWUrVaw2QmpsVkKO0sZmJ72DSBjXfEuG/s640/2013-09-23_101124.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
這樣就查詢到我們要到，接著我們就是把資料送到我們的程式輸入物件中&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;    &lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;def&lt;/span&gt; getEnvironmentVariable(self):
        key = win32con.HKEY_LOCAL_MACHINE
        subkey = &lt;span style=&quot;color: blue;&quot;&gt;r&quot;SYSTEM\CurrentControlSet\Control\Session Manager\Environment&quot;&lt;/span&gt;
        regKey = win32api.RegOpenKey(key, subkey)
        value, datatype = win32api.RegQueryValueEx(regKey, &lt;span style=&quot;color: blue;&quot;&gt;&quot;Path&quot;&lt;/span&gt;)
        self.nameEdit.setText(&lt;span style=&quot;color: blue;&quot;&gt;&quot;Path&quot;&lt;/span&gt;)
        self.valueEdit.setText(value)&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;br /&gt;
函數 __init__ 最後添加一行&lt;br /&gt;
&lt;br /&gt;
self.getEnvironmentVariable()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2Fv8qRdYPJlrco2caDriP1lFa9VA7Tx8NbCQk1GvqWllLMaswb4Ry4UIbPbXwWgX1413EGsI6Dl-gq95pgeF6hYI4Dw6Wx7xqF1mkeV8cOU1nadmnqMdVsCarDCYGQYJlFq3eb122BtvZ/s1600/2013-09-23_102337.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2Fv8qRdYPJlrco2caDriP1lFa9VA7Tx8NbCQk1GvqWllLMaswb4Ry4UIbPbXwWgX1413EGsI6Dl-gq95pgeF6hYI4Dw6Wx7xqF1mkeV8cOU1nadmnqMdVsCarDCYGQYJlFq3eb122BtvZ/s1600/2013-09-23_102337.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
path裡的值通常是很長，這樣做修改對我們來講不是很方便，可以&lt;br /&gt;
調整一下程式讓修改值，變方便點。&lt;br /&gt;
&lt;br /&gt;
原本的 self.valueEdit = QLineEdit() 換成:&lt;br /&gt;
&lt;br /&gt;
self.valueEdit = QTextEdit()&lt;br /&gt;
&lt;br /&gt;
並且把self.valueEdit 調大一點&lt;br /&gt;
&lt;br /&gt;
self.valueEdit.setMinimumSize(320, 200)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFyZgIRHmbsEMyrxRZG_FGCseXZTc0AV-8e2wp8WC8bDOfjE6P5eqcXpvNKH5yuZLE_I9QR0Jco8uNzfhTqamOZg2K3SUBp_J95kwjqVN14ggbtrW7D-LFQEwBA7zDJEZz6v1xGE0kE62Z/s1600/2013-09-23_103154.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFyZgIRHmbsEMyrxRZG_FGCseXZTc0AV-8e2wp8WC8bDOfjE6P5eqcXpvNKH5yuZLE_I9QR0Jco8uNzfhTqamOZg2K3SUBp_J95kwjqVN14ggbtrW7D-LFQEwBA7zDJEZz6v1xGE0kE62Z/s320/2013-09-23_103154.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
這樣雖然方便點，但文字排版還是有亂！我們再處理一下，讓它整齊點&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;for&lt;/span&gt; line &lt;span style=&quot;font-weight: bold;&quot;&gt;in&lt;/span&gt; (value.split(&lt;span style=&quot;color: blue;&quot;&gt;&#39;;&#39;&lt;/span&gt;)):

    &lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;if&lt;/span&gt; line: self.valueEdit.append(line + &lt;span style=&quot;color: blue;&quot;&gt;&#39;;&#39;&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRhieGmPhWyefqvZw4Y5OzlkoW18bX04OPvl-HxHIxrzh4rrX_TmQsWnFWtxGVeo4P-3vTe7uYpnMYn5fwsdV9Y2cHfaawAgM29oK6cly0V7kQry4OyMxoLj5LH30CsWyWBf_4vHTQ06EH/s1600/2013-09-23_103541.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRhieGmPhWyefqvZw4Y5OzlkoW18bX04OPvl-HxHIxrzh4rrX_TmQsWnFWtxGVeo4P-3vTe7uYpnMYn5fwsdV9Y2cHfaawAgM29oK6cly0V7kQry4OyMxoLj5LH30CsWyWBf_4vHTQ06EH/s320/2013-09-23_103541.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
這樣就整齊多了，可以一目瞭然知道我們有什麼path設定&lt;br /&gt;
&lt;br /&gt;
那麼最後一步就是修改了存檔了&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;QLineEdit 要取得輸入框的值是用&lt;br /&gt;
lineEdit.text()&lt;br /&gt;
&lt;br /&gt;
而 QTextEdit 的話是用 textEdit.toPlainText()&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;value = str(self.valueEdit.toPlainText())

&lt;span style=&quot;color: #008800; font-style: italic;&quot;&gt;#去除 QTexEdit產生的換行符 &#39;\n&#39;&lt;/span&gt;
value = value.replace(&lt;span style=&quot;color: blue;&quot;&gt;&#39;\n&#39;&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;&#39;&#39;&lt;/span&gt;)&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;所以程式碼如下: &lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;
&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;
    &lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;def&lt;/span&gt; setEnvironmentVariable(self):
        key = win32con.HKEY_LOCAL_MACHINE
        subkey = &lt;span style=&quot;color: blue;&quot;&gt;r&quot;SYSTEM\CurrentControlSet\Control\Session Manager\Environment&quot;&lt;/span&gt;
        value = str(self.valueEdit.toPlainText())
        value = value.replace(&lt;span style=&quot;color: blue;&quot;&gt;&#39;\n&#39;&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;&#39;&#39;&lt;/span&gt;)
        &lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;try&lt;/span&gt;:
            regKey = win32api.RegOpenKeyEx(key, subkey,
                                            &lt;span style=&quot;color: blue;&quot;&gt;0&lt;/span&gt; ,win32con.KEY_WRITE)
            win32api.RegSetValueEx(
                    regKey, &lt;span style=&quot;color: blue;&quot;&gt;&quot;Path&quot;&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;0&lt;/span&gt;, 
                    win32con.REG_EXPAND_SZ, value)
        &lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;except&lt;/span&gt; NameError, e:
            &lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;print&lt;/span&gt; e
        &lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;except&lt;/span&gt; Exception, e:
            &lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;print&lt;/span&gt; e
        &lt;span style=&quot;color: navy; font-weight: bold;&quot;&gt;finally&lt;/span&gt;:
            win32api.RegCloseKey(regKey)&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;要讓程式按下『確認』鍵能產生動作，我們得設定一下&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;PyQt 的 SINGAL &amp;amp; SLOT 訊號與插槽&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;其動作原理即 我們按下『OK』送出一個訊號 SIGNAL(&quot;accepted()&quot;)&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;然後這個訊號要到那邊有什麼動作呢？&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;我們希望程式幫我們修改 註冊表&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;所以我們在程式的__init__ 初始化函數增添下面二行:&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;self.connect(buttonBox, SIGNAL(&lt;span style=&quot;color: blue;&quot;&gt;&quot;accepted()&quot;&lt;/span&gt;),
                     self.setEnvironmentVariable)&lt;/pre&gt;
&lt;br /&gt;
按下 『Cancel』則不做修改退出&lt;br /&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;self.connect(buttonBox, SIGNAL(&lt;span style=&quot;color: blue;&quot;&gt;&quot;rejected()&quot;&lt;/span&gt;),
                     self, SLOT(&lt;span style=&quot;color: blue;&quot;&gt;&quot;reject()&quot;&lt;/span&gt;))&lt;/pre&gt;
&lt;br /&gt;
這樣整個程式就算大功告成！！&lt;br /&gt;
&lt;br /&gt;
如要再進階點，做整個環境變數修改也可以&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUnPYp75F4XErdIG8lbjV5HwI0bgRF2H_4Az1psISlbIM0I4nA3hHaAF3SlpsfLHhRh0SVRr2uUbJrqYT9Yi82OjNnQNckGPNRp0PIkKVyhdt_9x0HkNGu2QNyUeQuVjXKIZIGjeo-xYqh/s1600/2013-09-23_110645.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;506&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUnPYp75F4XErdIG8lbjV5HwI0bgRF2H_4Az1psISlbIM0I4nA3hHaAF3SlpsfLHhRh0SVRr2uUbJrqYT9Yi82OjNnQNckGPNRp0PIkKVyhdt_9x0HkNGu2QNyUeQuVjXKIZIGjeo-xYqh/s640/2013-09-23_110645.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
不過程式會變得較複雜，會使我解釋老半天，也沒幾個人有耐心看完！&lt;br /&gt;
有興趣的可以自已做研究，自已嘗試學較多進步較多！&lt;br /&gt;
&lt;br /&gt;
文章還是以儘量簡單為主！&lt;br /&gt;
&lt;br /&gt;
Easy To Be Happy!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/33666283779774124/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2013/09/pyqt4-2.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/33666283779774124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/33666283779774124'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2013/09/pyqt4-2.html' title='PyQt4 教學2'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinGUu08-IA83rEZSDQGHPQAX37DLdGz0qbF8L9djZEciKIcPm2m1narPYMOnYecl6mCLZsFc5XGSOtdH7oVX2STl8vFBE4cVUTM7TBOnXo2x5yAes4Rd4w6duQeA7Qfz_XaRojTbEk2Q9t/s72-c/2013-09-23_040839.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-8158034299407181035</id><published>2013-04-05T16:08:00.002-07:00</published><updated>2013-04-05T16:08:19.915-07:00</updated><title type='text'>【轉載】其實Unix很簡單</title><content type='html'>&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;陳皓&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;很多編程的朋友都在網上問我這樣的幾個問題，Unix怎麼學？Unix怎麼這麼難？如何才能學好？並且讓我給他們一些學好Unix的經驗。在絕大多數時候，我發現問這些問題的朋友都有兩個特點：&lt;br /&gt;&lt;br /&gt;1）對Unix有畏難心理，對其沒有信心；&lt;br /&gt;&lt;br /&gt;2）喜歡用拿Windows來和Unix做比較。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這兩種特點就像兩個“心理暗示”，暗示著自己Unix很不好學，暗示著Unix很糟糕，不如Windows好。於是，自己也就被自己的這種長期的“暗示”所催眠了。因為，從一開始就有畏難情緒，所以也就覺得Unix不好，覺得非常很吃力，最後還會導致對Unix的厭惡和反感的情緒。所以，為了糾正上述朋友們的“心理暗示”。我想寫下這篇文章，想告訴大家，Unix真的很簡單。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在正式敘述“簡單的Unix”之前，我想做幾點說明：（以免陷入無意義的爭論）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1）&amp;nbsp; 本文是站在開發者的角度來說明的，所以，如果有朋友不同意我的觀點，請也以開發者的角度來向我提出質問和討論，本人非常歡迎。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2）&amp;nbsp; 本文難免要用Windows來和Unix做對比。這並不代表我不喜歡Windows，也不代表我要叫你放棄Windows。我們也知道這種對比已經沒有什麼意思了，但因為眾多的朋友被Windows先入為主了，所以，我一定要拿Windows來開刀，才能扭轉那個“心理暗示”。僅此而已。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OK，言歸正傳。先說Unix的一個最重要的特點——“高內聚，低藕合”！也就是說，Unix下的各種應用程序都和別人不相干。這就是貫穿整個Unix的思維——模塊和程序的高度獨立性。這樣的設計和做法，會讓你的系統比較的穩定，也會讓你的系統特別地容易管理和維護。Unix下的應用程序們就像一支正規軍一樣排列地整整齊齊，只要司令（內核）還在，系統是不會因為某個軍隊的損失而無法自舉的。而Windows的應用程序們就像一片樹林一樣，從地表上看過去，樹木們排列地整整齊齊，但是他們的樹根在地下卻相互纏繞在一起，剪不斷，理還亂，異常地復雜。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; “高內聚，低藕合”的給Unix造成的結果是，其系統中基本上都是功能單一的小程序，這些小程序就像積木一樣，當我們需要構造建一個自定義的建築時，大多數情況下，我們只需要做的只是一個“搭積木”的簡單游戲。Windows建設得富麗堂皇，可惜，別人的“積木”你幾乎不可能拿到自己的建築中來。總是要你模仿或重寫。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;（插一句：你是否注意到在網上下載Windows的軟件時，會有一種所謂的“綠色軟件”？這就是對Windows的最大諷刺，Windows下裝一個軟件，N個DLL放到Windows系統目錄下，注冊表裡寫入N個鍵值，還有很多你不知道的動作。而在Unix裝軟件，你不用擔心你的系統目錄下會莫明其妙地多出些亂七八糟的文件。就是copy那麼簡單，那怕是rpm自動安裝，安裝完後，你也能夠查詢到軟件安裝後對系統所做的改變。所以，你在Unix下分發你的軟件時，你會覺得比Windows下要做得簡單了許多許多。）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 再說說Unix的另一個最重要的特點——“所有的設備都可以像文件一樣地操作”。簡單吧。所有的調備，文件、打印機、顯示器、終端、網絡、軟盤、磁帶、USB、CDROM、等等的I/O操作，都以文件描述符的方式進行操作。兩個Unix下最重要的系統調用read/write就可以勝任所有設備的I/O了。Unix早就在/dev目錄下為你建好了這些文件。使用起來很簡單。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 也許很多人都覺得Unix的命令行太過復雜。一個命令有著若干的參數，異常地復雜。但之所以今天Unix下的應用程序還在以字符界面為主，這恰好體現了Unix的簡單的特征。這也是Unix的另一個特點——“命令的相互支持性”，命令們通過一個管道或是重定向，可以互相聯系在一起，再加以Shell腳本的支持，哪怕要實現一些復雜的功能（比如一個小型的文本數據庫），也是簡單之極。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果上面的論述依然不能讓你信服Unix很簡單，那麼，讓我們來用一些具體地實際的例子來看一下，Unix是如何簡單的。讓我們試著做下面的這樣一個假設：“如果我們在學習編程的時候一開始是學Unix，然後轉去做Windows”，那會是怎麼樣的一個情況？&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1）&amp;nbsp; 我們在Unix下創建進程，使用fork調用。到了Windows下，我們查了MSDN，發現了一個叫CreateProcess的系統調用可以創建進程，但我們卻發現這個系統調用有10個參數。而Unix下的fork卻一個參數都沒有。這種情況下，你是否會有一種頭大的感覺？因為，在Unix下，你根本看不到會有10參數這樣復雜的系統調用API。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2）&amp;nbsp; 我們在Unix下操作文件權限很簡單，文件權限分三組（本人，同組，別人），每組都是可讀，可寫，可執行。兩個簡單的系統調用chmod/chown就搞定。到了Windows下，如果是NTFS，如果要以程序的方式設置文件權限，呵呵，你需要先了解什麼是：SID，什麼是DACL，什麼是SACL，什麼是ACE，還有十幾相關的系統API函數等著你。（參看我的《以程序操作NTFS文件權限》）你也許會覺得這麼復雜的安全策略是讓系統更安全的基礎，可以自從Windows出現的那一天以後，在安全方面的表現就沒有勝過Unix。這無疑讓人感到Windows做了一件吃力不討好的事。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;（插一句：Unix下的用戶切換是相當簡易方便的。而Windows下的用戶切換會導致你需要退出當前用戶的前台程序。這導致了Windows下的用戶幾乎無一例外地都會選擇在超級用戶的權限下工作/上網，這完全是讓自己的機器在裸奔，所以，Windows下的病毒一旦在系統中運行就為所欲為了。而Unix下，很少用戶會以root身份操作本機，因為切換用戶非常方便。）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3）&amp;nbsp; 在Unix下，用戶有ID，用戶組有ID，進程/線程都有ID。ID很簡單易懂，就像我們的身份證一樣。到了Windows下，用戶標識叫Token，進程標識叫Handle（其實也就是一個DWORD的類型），我看到網上很多問題都在問Windows下的Handle的概念問題。我一直在想，為什麼微軟不取一個簡單易懂的術語？要取得那麼抽像，那麼讓人很迷惑。雖然這讓Windows看起很NB，但也會因此加大了學習復雜度。（Windows的開發學習復雜度要比Unix復雜多了，而且有太多的看似很高深的術語讓人一頭霧水）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4）&amp;nbsp; 讓我們再來看一下用戶管理和程序所有者方面的東西。在Unix下，需要你做的是配置NIS服務器和NFS服務器（以Autofs自動mount），簡潔，清楚。到了Windows下，與其相似的是一個叫Domain的東西（主域控制器），首先，為了加入域，你需要重啟電腦（Unix下只需要配置/etc/nsswitch.conf文件來告訴本機的用戶登錄源，無需重啟），而對開發者來說，Unix的這個配置對程序是完全透明的。而Windows的域用戶和本地用戶需要一個域名來區分。在程序中切換用戶時，Unix只需要setuid/seteuid就行了，Windows對此有三個比較復雜的API：CreateProcessAsUser, ImpersonateLoggedOnUser, LogonUser，其復雜度就不用比較了。另外，在Domain方式下，你的Document and Setting目錄下的文件，會全部放到Domain服務器上去，你在別的機器上登錄時，需要下載這些文件。最後，我倒不擔心你和網友的MSN聊天記錄會因為你的登錄而到處都是，我擔心的是，你在這麼復雜的管理環境中寫出來的代碼是否能讓別人放心？:-(&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5）&amp;nbsp; 在Unix下，要把自己的程序加入系統的啟動服務只需要在/etc/init.d中配置就行了。寫下一個有啟動停止功能腳本，以特殊命名的方式鏈接到不同啟動模式目錄下就行了。Windows下加一個啟動服務，如果你不編寫程序，估計比較困難。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6）&amp;nbsp; 在Unix下，如果要取得系統的信息。只需要到/proc目錄下去cat那堆文件。所有進/線程的狀態、命令行、內存/交換區使用情況、打開的文件描述符，等等，系統的CPU，內存，交換區，內存文件IO，分區，信息，網絡，系統運行狀態，系統設備，等等，要有多詳細就有多詳細，而且完全是純文本的，直接就可以看了。到了Windows下，要窮舉系統當前進程的信息，就不是一樣很容易的事，更別說要取得別的信息了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;我很佩服微軟把操作系統搞得那麼復雜，又是注冊表，又是安全策略，又是OLE，又是COM……。每次打開regedit.exe時，我根本不敢碰HKEY_CLASSES_ROOT，因為我看著裡面那些成千上萬個CLSID，我有點暈菜。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;自1995年以來，10來年過去了。微軟推出了多種各式各樣的技術。我還記得Visual Studio 6.0中還有兩個叫做FoxPro和J++的東西，FoxPro來自Foxbase，還有個幾年，J++好像就沒有幾年。ActiveX Control完全是一個失敗的技術，而那個叫做VB的編程語言，今天看來，它的確毀了很多很有潛力的程序員。在COM出現的時候，不知道今天還有多少人還記得一個叫MTS的玩意？今天，不知道還有多少人記得有一個叫ODBC的東西？在這種復雜混亂的Windows世界中，是否讓你疲於追趕？今天的.NET不知道又有多少技術會隨著時間所沉澱？在Windows上面，我們學習了許多的失敗技術或是說是過渡技術。而我們的Unix自從上紀70年代以來，就沒有多大的變化，而因為Unix應運而生的C語言直到今天依然光彩奪目。我相信這個30多年來久經考驗還那麼簡單的Unix。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Unix就是這麼簡單，各位想在Unix下學開發的朋友，Windows那麼復雜的操作系統都過來了，你還會怕這麼簡單的Unix麼？&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(轉載時請注明作者和出處。未經許可，請勿用於商業用途)&lt;br /&gt;&lt;br /&gt;更多文章請訪問我的Blog: http://blog.csdn.net/haoel</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/8158034299407181035/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2013/04/unix.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/8158034299407181035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/8158034299407181035'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2013/04/unix.html' title='【轉載】其實Unix很簡單'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-7487670182533265727</id><published>2013-02-27T20:29:00.000-08:00</published><updated>2013-02-27T20:29:15.622-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IE"/><category scheme="http://www.blogger.com/atom/ns#" term="proxy"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>Python 修改 IE Proxy 設定</title><content type='html'>網路上怎麼找，都找到這種程式碼,但這些改法只是改『區域網路』的部份，並非我真正要的。&lt;br /&gt;&lt;br /&gt;improt _winreg&lt;br /&gt;key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r&quot;Software\Microsoft\Windows\CurrentVersion\Internet Settings&quot;,0,_winreg.KEY_ALL_ACCESS) &lt;br /&gt;_winreg.SetValueEx(key,&quot;ProxyEnable&quot;,0, _winreg.REG_DWORD, 1)&amp;nbsp; &lt;br /&gt;_winreg.SetValueEx(key,&quot;ProxyServer&quot;,0, _winreg.REG_SZ, &quot;proxy:port&quot;) &lt;br /&gt;
&lt;br /&gt;
真的需要修改的位置應該位於&lt;br /&gt;
r&quot;Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj1nhYwJ5OuhS4nDhyq5ELSHg-ctZvQmvegB9VAq8x4mnarBX44pJ45a3zVQ2m-p1bz5YeosyRNEyMhumiCQ_znf7lfFMVu5KFcU08tFfhvMQRSvztjeJkVobWymH_wtlq3oreLOliL69I/s1600/%E6%9C%AA%E5%91%BD%E5%90%8D+-+2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;321&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj1nhYwJ5OuhS4nDhyq5ELSHg-ctZvQmvegB9VAq8x4mnarBX44pJ45a3zVQ2m-p1bz5YeosyRNEyMhumiCQ_znf7lfFMVu5KFcU08tFfhvMQRSvztjeJkVobWymH_wtlq3oreLOliL69I/s640/%E6%9C%AA%E5%91%BD%E5%90%8D+-+2.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
再來得看adsl設定什麼名稱就修改那個檔案&lt;br /&gt;
&lt;br /&gt;
但到這一步，就遇到了難題 登錄檔的 檔式 為 REG_BINARY 二進位檔&lt;br /&gt;
不像修改區域網路的部份為 REG_SZ 可以直接設定 實際 IP 數值&lt;br /&gt;
winreg.SetValueEx(key,&quot;ProxyServer&quot;,0, winreg.REG_SZ, &quot;proxy:port&quot;)&lt;br /&gt;
&lt;br /&gt;
網路上也難以找到相關資料，或好用的修改方式、模組&lt;br /&gt;
&lt;br /&gt;
只好認命一點，取出對應的值的替換掉&lt;br /&gt;
&lt;br /&gt;
第一步，一樣先取所在位置的所有值:&lt;br /&gt;
&lt;br /&gt;
key = 
_winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r&quot;Software\Microsoft\Windows\CurrentVersion\Internet
 Settings\Connections&quot;,0, _winreg.KEY_ALL_ACCESS)&lt;br /&gt;
&lt;br /&gt;
再來查詢 adsl 名稱，取出value&lt;br /&gt;
&lt;br /&gt;
adsl = _winreg.QueryValueEx(key, &#39;adsl&#39;) &lt;br /&gt;
返回tuple 值&lt;br /&gt;
&lt;br /&gt;
選第一個&lt;br /&gt;
&lt;br /&gt;
a = adsl[0]&lt;br /&gt;
&lt;br /&gt;
我們所需要修改的部份 為第5個值跟第9個值，還有proxy&lt;i&gt; ip 設定的第17個起&lt;/i&gt;，往後算20個位置&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEismUov8ac455o4s8An8Law6S5spO5C3N1Q5NblqgA5UcXEj___dZPfdJbPcRYIC3OaiRleMOTxlZMPXRAqdAu12jiS4eAsjt8_rn9DHJLHAjlzmJ4oMuSdC-HXtLt73_EHJRvEipZgWTrB/s1600/%E6%9C%AA%E5%91%BD%E5%90%8D+-+4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;260&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEismUov8ac455o4s8An8Law6S5spO5C3N1Q5NblqgA5UcXEj___dZPfdJbPcRYIC3OaiRleMOTxlZMPXRAqdAu12jiS4eAsjt8_rn9DHJLHAjlzmJ4oMuSdC-HXtLt73_EHJRvEipZgWTrB/s320/%E6%9C%AA%E5%91%BD%E5%90%8D+-+4.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
每個我們在 IE 裡設定，啟用proxy 或關閉proxy 第5個值都會自動加1&lt;br /&gt;
啟用proxy的話 第9個值 為3&lt;br /&gt;
&lt;br /&gt;
瞭解原理後，要修改就不太難了&lt;br /&gt;
&lt;br /&gt;
修改 REG_BINARY 二進位檔，我所能想到的方式就是轉 16進位來替換修改&lt;br /&gt;
&lt;br /&gt;
所以導入 binascii 模組&lt;br /&gt;
&lt;br /&gt;
import binascii&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
adsl_ascii = binascii.b2a_hex(a)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
adsl_ascii 的內容，會是類似以下這樣:&lt;br /&gt;
&lt;br /&gt;
&#39;46000000010000000300000014000000&lt;br /&gt;
3231382e3138382e31332e3233373a383&lt;br /&gt;
838380000000000000000000000000000&lt;br /&gt;
000000000000000000000000000000000&lt;br /&gt;
000000000000000000000&#39;&lt;br /&gt;
&lt;br /&gt;
修改方式&lt;br /&gt;
&lt;br /&gt;
adsl_ascii = adsl_ascii[:9] + &#39;1&#39; + adsl_ascii[10:17] + &#39;3&#39; + adsl_ascii[18:]&lt;br /&gt;
&lt;br /&gt;
原本的第5跟第9，換算成16進位變 第10跟第18的位置&lt;br /&gt;
替換後轉回 二進位檔&lt;br /&gt;
&lt;br /&gt;
adsl_binary = binascii.a2b_hex(adsl_ascii )&lt;br /&gt;
&lt;br /&gt;
然後再修改註冊表&lt;br /&gt;
_winreg.SetValueEx(key, &quot;adsl&quot;, 0, _winreg.REG_BINARY, adsl_binary)&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
這樣 proxy 就啟用了，如要關閉就是用: &lt;br /&gt;
&lt;br /&gt;
adsl_ascii = adsl_ascii[:9] + &#39;0&#39; + adsl_ascii[10:17] + &#39;1&#39; + adsl_ascii[18:]&lt;br /&gt;
adsl_binary = binascii.a2b_hex(adsl_ascii ) &lt;br /&gt;
_winreg.SetValueEx(key, &quot;adsl&quot;, 0, _winreg.REG_BINARY, adsl_binary)&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
但因為proxy 的 ip 還未要設定所以，我們再添加修改ip的位置&lt;br /&gt;
# 啟用 Proxy&lt;br /&gt;
adsl_ascii = adsl_ascii[:9] + &#39;1&#39; + adsl_ascii[10:17] + &#39;3&#39; + adsl_ascii[18:] &lt;br /&gt;
# 設定 Proxy IP&lt;br /&gt;
adsl_ascii =&amp;nbsp;adsl_ascii[32] + proxy_ip + i[72:]&lt;br /&gt;
&lt;br /&gt;
但一般proxy IP 格式為 221.130.23.82:80&lt;br /&gt;
一樣得先轉成 16進位的格式再來做替換&lt;br /&gt;
&lt;br /&gt;
所以簡單的寫個 轉換函數&lt;br /&gt;
&lt;br /&gt;
def proxy2hex(proxy):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_hex = &#39;&#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for i in proxy:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_hex += (hex(ord(i)))[2:]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_hex += &#39;0&#39; * (40 - len(proxy_hex))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return proxy_hex&lt;br /&gt;
&lt;br /&gt;
proxy_ip&amp;nbsp; = proxy2hex(&quot;221.130.23.82:80&quot;)&lt;br /&gt;
&#39;3232312e3133302e32332e38323a383000000000&#39;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;adsl_ascii =&amp;nbsp;adsl_ascii[32] + proxy_ip + i[72:]&lt;br /&gt;
&amp;nbsp;adsl_binary = binascii.a2b_hex(adsl_ascii ) &lt;br /&gt;
_winreg.SetValueEx(key, &quot;adsl&quot;, 0, _winreg.REG_BINARY, adsl_binary)&amp;nbsp; &lt;br /&gt;
這樣就能啟用IE的proxy跟設定ip位置&lt;br /&gt;
&lt;br /&gt;
如不想關掉ie再重開讓設定生效&lt;br /&gt;
&lt;br /&gt;
def refresh(self):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import ctypes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTERNET_OPTION_REFRESH = 37&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTERNET_OPTION_SETTINGS_CHANGED = 39&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internet_set_option = ctypes.windll.Wininet.InternetSetOptionW&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internet_set_option(0, INTERNET_OPTION_REFRESH, 0, 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internet_set_option(0, INTERNET_OPTION_SETTINGS_CHANGED, 0, 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
如有更好的修改方式，請告知一下，修改REG_BINARY格式蠻麻煩的！！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/7487670182533265727/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2013/02/python-ie-proxy.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/7487670182533265727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/7487670182533265727'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2013/02/python-ie-proxy.html' title='Python 修改 IE Proxy 設定'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj1nhYwJ5OuhS4nDhyq5ELSHg-ctZvQmvegB9VAq8x4mnarBX44pJ45a3zVQ2m-p1bz5YeosyRNEyMhumiCQ_znf7lfFMVu5KFcU08tFfhvMQRSvztjeJkVobWymH_wtlq3oreLOliL69I/s72-c/%E6%9C%AA%E5%91%BD%E5%90%8D+-+2.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-3900368403220779010</id><published>2013-01-05T13:31:00.000-08:00</published><updated>2013-01-05T13:31:34.584-08:00</updated><title type='text'>try: except:  錯誤處理列表</title><content type='html'>&lt;small style=&quot;color: red; font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;BaseException&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;+-- SystemExit&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;+-- KeyboardInterrupt&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;+-- GeneratorExit&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;+-- &lt;span style=&quot;color: red;&quot;&gt;Exception&lt;/span&gt;&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- StopIteration&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- ArithmeticError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- FloatingPointError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- OverflowError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- ZeroDivisionError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- AssertionError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- AttributeError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- BufferError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- EnvironmentError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- IOError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- OSError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- WindowsError (Windows)&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- VMSError (VMS)&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- EOFError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- ImportError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- LookupError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- IndexError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- KeyError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- MemoryError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- NameError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- UnboundLocalError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- ReferenceError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- RuntimeError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- NotImplementedError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- SyntaxError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- IndentationError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- TabError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- SystemError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- TypeError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- ValueError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- UnicodeError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- UnicodeDecodeError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- UnicodeEncodeError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- UnicodeTranslateError&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- Warning&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- DeprecationWarning&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- PendingDeprecationWarning&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- RuntimeWarning&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- SyntaxWarning&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- UserWarning&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- FutureWarning&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- ImportWarning&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- UnicodeWarning&lt;/span&gt;&lt;/small&gt;&lt;br style=&quot;font-family: Courier New,Courier,monospace; font-weight: bold;&quot; /&gt;
      &lt;small style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-family: Courier New,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-- BytesWarning&lt;/span&gt;&lt;/small&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/3900368403220779010/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2013/01/try-except.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/3900368403220779010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/3900368403220779010'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2013/01/try-except.html' title='try: except:  錯誤處理列表'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-4850271148205515323</id><published>2013-01-05T13:25:00.001-08:00</published><updated>2013-01-05T13:27:13.708-08:00</updated><title type='text'>mechanize 模擬瀏覽器</title><content type='html'>文章參考來源: http://stockrt.github.com/p/emulating-a-browser-in-python-with-mechanize/&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;span style=&quot;color: #bb7977; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; mechanize&lt;/span&gt;
&lt;span style=&quot;color: #bb7977; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; cookielib&lt;/span&gt;

&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;# Browser&lt;/span&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;br &lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; mechanize&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;Browser&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;()&lt;/span&gt;

&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;# Cookie Jar&lt;/span&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;cj &lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; cookielib&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;LWPCookieJar&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;()&lt;/span&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;set_cookiejar&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;cj&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;)&lt;/span&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;# Browser options&lt;/span&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;set_handle_equiv&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;#br&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;set_handle_gzip&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;set_handle_redirect&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;set_handle_referer&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;set_handle_robots&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;False&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;# Follows &lt;/span&gt;&lt;span style=&quot;color: #bb7977; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;refresh&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: purple; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; but &lt;/span&gt;&lt;span style=&quot;color: #bb7977; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; hangs &lt;/span&gt;&lt;span style=&quot;color: #bb7977; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;on refresh&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: purple; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;0&lt;/span&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;set_handle_refresh&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;mechanize&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;_http&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;HTTPRefreshProcessor&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;(),&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; max_time&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: purple; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;# Want debugging messages?&lt;/span&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;#br&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;set_debug_http&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;#br&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;set_debug_redirects&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;#br&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;set_debug_responses&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;# User-Agent &lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;this &lt;/span&gt;&lt;span style=&quot;color: #bb7977; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; cheating&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; ok?&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;addheaders &lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;= [(&lt;/span&gt;&lt;span style=&quot;color: #a68500; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;&#39;User-agent&#39;&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #a68500; font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;&#39;Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1&#39;&lt;/span&gt;&lt;span style=&quot;color: #ff0080; font-family: &#39;Courier New&#39;; font-size: 10pt; font-weight: 600;&quot;&gt;)]&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;將以上程式碼存成 browser.py , 丟到python27/lib 目錄裡&lt;/pre&gt;
&lt;pre&gt;這樣一個簡單實用的陽春型模擬器就完成了。 &lt;/pre&gt;
&lt;pre&gt;我們每次要用時就可以很方便的呼叫出來用&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;gt;&amp;gt;&amp;gt; from browser import br&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;到無名逛逛&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;gt;&amp;gt;&amp;gt; html = br.open(&#39;http://www.wretch.cc/blog/&#39;).read()&lt;/pre&gt;
&lt;pre&gt;&amp;gt;&amp;gt;&amp;gt; br.title()&lt;/pre&gt;
&lt;pre&gt;&#39;Blog - Wretch.cc&#39;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;這樣我們就已經到了無名&lt;/pre&gt;
&lt;pre&gt;如果想登入的話，我們可以打開登入的網址&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;gt;&amp;gt;&amp;gt; html = br.open(&#39;https://login.yahoo.com/config/login?.intl=tw&amp;amp;.partner=&amp;amp;.last=&amp;amp;.src=wrtch&amp;amp;.scrumb=0&amp;amp;.pd=c=R.kjIs2p2e5IjYgxHnmFvubWqw--&amp;amp;pkg=&amp;amp;stepid=i&amp;amp;&amp;amp;.done=https%3a//login.yahoo.com/config/validate%3f.src=wrtch%26.pc=1164%26.scrumb=0%26.done=http%3a//www.wretch.cc/IDintegration/?ref=%25252Fblog%25252F&#39;).read() &lt;/pre&gt;
&lt;pre&gt;&amp;gt;&amp;gt;&amp;gt; print br.title()
登入 - Yahoo!奇摩&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;登入的網址挺長的&lt;/pre&gt;
&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&amp;gt;&amp;gt;&amp;gt; for f in br.forms():
 print f&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;pre&gt;會將網頁的form秀給我們看&lt;/pre&gt;
&amp;nbsp;&amp;gt;&amp;gt;&amp;gt; br.select_form(name=&quot;login_form&quot;)&lt;br /&gt;
&lt;br /&gt;
得看網頁的form 設什麼名字，萬一沒有設，我們可以用&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; br.select_form(nr=0)&amp;nbsp; # 看是第幾個form，數字就輸入多少&lt;br /&gt;
&lt;br /&gt;
如果還查找不到，那麼form可能是用javascript動態生成，在此就不介紹處理方法。&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; br.form[&#39;login&#39;] = &#39;帳號&#39;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; br.form[&#39;passwd&#39;] = &#39;密碼&#39;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; br.submit()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #請程式送出登入form&lt;br /&gt;
&lt;br /&gt;
成功的話，我們就可以以登入帳號的狀態去瀏覽無名網站。 &lt;br /&gt;
&lt;br /&gt;
再配合&lt;br /&gt;
&lt;h3 class=&quot;r&quot;&gt;
&lt;a class=&quot;l vst&quot; href=&quot;http://www.crummy.com/software/BeautifulSoup/&quot;&gt;&lt;i&gt;Beautiful Soup, re, XPath(lxml)&lt;/i&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h3 class=&quot;r&quot;&gt;
&lt;i&gt;等查找網頁元素資料工具，想要什麼資料將是輕而易舉！&lt;/i&gt;&lt;/h3&gt;
# 以XPath 簡單示範一下&lt;br /&gt;
import lxml.html as H&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; html = br.open(&#39;http://www.wretch.cc/blog/XXXXXX&#39;).read()&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; blog = H.document_fromstring(html)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #格式化網頁資料元素&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; who = blog.xpath(&quot;//div[@id=&#39;whowrapper&#39;]/ul/li/a/@href&quot;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #抓出誰來我家連結&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; for w in who:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print w&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/as12345634&lt;br /&gt;
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/xdxd0819&lt;br /&gt;
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/s5725j5725&lt;br /&gt;
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/baibai0914&lt;br /&gt;
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/happy880328&lt;br /&gt;
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/candy88622&lt;br /&gt;
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/alice21622&lt;br /&gt;
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/cul3977ssy&lt;br /&gt;
http://tw.rd.yahoo.com/referurl/wretch/blog/user/whocome/*http://www.wretch.cc/blog/weary898&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
這樣我們就知道誰來過了&lt;br /&gt;
Chrome&amp;nbsp; 瀏覽器，可以查看網頁元素 轉 xpath，很方便。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/4850271148205515323/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2013/01/mechanize.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/4850271148205515323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/4850271148205515323'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2013/01/mechanize.html' title='mechanize 模擬瀏覽器'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-1347310389607601170</id><published>2012-12-11T09:22:00.000-08:00</published><updated>2012-12-11T09:24:07.963-08:00</updated><title type='text'>PyQt4 教學1</title><content type='html'>&lt;pre class=&quot;prettyprint&quot;&gt;我們先簡單的載入sys及pyqt4介面相關模組，然後寫個hello world標籤讓它顯示 
# -*- coding: UTF8 -*-
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

app = QApplication(sys.argv)

hello = QLabel(&#39;Hello World&#39;)
hello.show()

sys.exit(app.exec_())&amp;nbsp;



&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPY5eqzsITOAVtmVJnptJWHBQHL4g31ShjrvwcOgIa4gjNGIz_uJcvTzr_aCgqS-4m902JPLtH25JdbBfjujpZfv3ezrp2yldP8nywOjkCj3KiXizEqah2fSTt-0B-MGhDXwbu5S5k27zm/s1600/%E6%9C%AA%E5%91%BD%E5%90%8D+-+2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPY5eqzsITOAVtmVJnptJWHBQHL4g31ShjrvwcOgIa4gjNGIz_uJcvTzr_aCgqS-4m902JPLtH25JdbBfjujpZfv3ezrp2yldP8nywOjkCj3KiXizEqah2fSTt-0B-MGhDXwbu5S5k27zm/s1600/%E6%9C%AA%E5%91%BD%E5%90%8D+-+2.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;pyqt4 習慣先載入一個程式主循環
app = QApplication(sys.argv)
&amp;nbsp;
如無這行，程式是不會有所反應的
所以這個小程式主要就是:
讓hello 等於 QLabel 然後讓程式顯示於視窗
hello = QLabel(&#39;Hello World&#39;)
hello.show()

簡單直覺
&amp;nbsp;
所以GUI介面我選擇了PyQt4
smart more smart
&amp;amp;nbsp
再來我們將程式直接轉成物件導向寫法！
# -*- coding: UTF8 -*-
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

app = QApplication(sys.argv)

class Hello(QWidget):
    def __init__(self, parent=None):
        super(self.__class__, self).__init__(parent)
        hello = QLabel(&#39;Hello World&#39;, self)

hello = Hello()
hello.show()
sys.exit(app.exec_())

先建立個class並繼承了QWidget
hello = QLabel(&#39;Hello World&#39;, self)
語法裡多個參數self, 主要是讓hello丟向QWidget
self等同代表了QWidget本身 
super(self.__class__, self).__init__(parent)
&amp;nbsp;
super算是python較特殊的東西，在此我只簡單的講，
在此使用super主要方便繼承 QWidget的__init__初始化
super(self.__class__, self).__init__(parent)跟使用
super(Hello, self).__init__(parent)是相同作用
但當class Hello(QWidget): 改成 class World(QWidget): 時
super(Hello, self).__init__(parent)一樣得跟著改
super(World, self).__init__(parent)
&amp;nbsp;
因此使用self.__class__會較方便點
如對super相當迷惑，請網路查詢一下資料，
super非三言兩語能解說清楚！ 

最後 sys.exit(app.exec_()) 
用於讓hello主程式關閉時，讓 app 也跟著關閉
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/1347310389607601170/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2012/12/pyqt4-1.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/1347310389607601170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/1347310389607601170'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2012/12/pyqt4-1.html' title='PyQt4 教學1'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPY5eqzsITOAVtmVJnptJWHBQHL4g31ShjrvwcOgIa4gjNGIz_uJcvTzr_aCgqS-4m902JPLtH25JdbBfjujpZfv3ezrp2yldP8nywOjkCj3KiXizEqah2fSTt-0B-MGhDXwbu5S5k27zm/s72-c/%E6%9C%AA%E5%91%BD%E5%90%8D+-+2.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-4536138743245635383</id><published>2012-09-23T22:22:00.000-07:00</published><updated>2012-09-23T23:13:34.821-07:00</updated><title type='text'>python 第三方擴展模組 安裝包 下載點整理</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;
PyV8 &lt;a href=&quot;http://code.google.com/p/pyv8/&quot; id=&quot;project_summary_link&quot;&gt;&lt;span itemprop=&quot;description&quot;&gt;Python Wrapper for Google V8 Javascript Engine&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span itemprop=&quot;description&quot;&gt;能在python底下使用 v8 javascript 引擎執行 js&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;ul class=&quot;nodot&quot;&gt;
&lt;li&gt;
  &lt;b&gt;Home Page:&lt;/b&gt;
  
  &lt;a href=&quot;http://code.google.com/p/pyv8/&quot;&gt;http://code.google.com/p/pyv8/&lt;/a&gt;
 &lt;/li&gt;
&lt;li&gt;
  &lt;b&gt;Download URL:&lt;/b&gt;
  
  &lt;a href=&quot;http://code.google.com/p/pyv8/downloads/list&quot;&gt;http://code.google.com/p/pyv8/downloads/list&lt;/a&gt;
 &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;span class=&quot;pun&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;PyV8&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; ctxt &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;PyV8&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;JSContext&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;com&quot;&gt;# create a context with an implicit global object&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; ctxt&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;enter&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;# enter the context (also support with statement)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; ctxt&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&quot;1+2&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;# evalute the javascript expression&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;com&quot;&gt;# return a native python int&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Global&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;PyV8&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;JSClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;):&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;com&quot;&gt;# define a compatible javascript class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;def&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; hello&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;):&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;# define a method&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&quot;Hello World&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; ctxt2 &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;PyV8&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;JSContext&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Global&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;())&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;# create another context with the global object&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; ctxt2&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;enter&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; ctxt2&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&quot;hello()&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;com&quot;&gt;# call the global object from javascript&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Hello&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;World&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;com&quot;&gt;# the output from python script&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;span class=&quot;com&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/4536138743245635383/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2012/09/python.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/4536138743245635383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/4536138743245635383'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2012/09/python.html' title='python 第三方擴展模組 安裝包 下載點整理'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-2458138668903308422</id><published>2012-09-23T22:06:00.001-07:00</published><updated>2012-09-23T22:06:40.350-07:00</updated><title type='text'>python re 正則表達式 模組</title><content type='html'>&lt;b&gt;re模組&lt;/b&gt;&lt;br /&gt;限定符說明：
&lt;br /&gt;&quot;.&quot;: 匹配任何字符
&lt;br /&gt;&quot;^&quot;: 匹配開頭 
&lt;br /&gt;&quot;$&quot;: 匹配結尾
&lt;br /&gt;&quot;*&quot;: 匹配0次或更多次之前的表達式。貪婪時，匹配盡可能多次
&lt;br /&gt;&quot;+&quot;: 匹配1次或更多次之前的表達式。等價於{1,}
&lt;br /&gt;&quot;?&quot;: 匹配0次或1次之前的表達式。等價於{0,1}
&lt;br /&gt;&quot;*?,+?,??&quot;: 非貪婪匹配
&lt;br /&gt;&quot;{m,n}&quot;: 貪婪式匹配之前的表達式m到n次
&lt;br /&gt;&quot;{m,n}?&quot;: 非貪婪匹配之前的表達式m到n次
&lt;br /&gt;&quot;\&quot;: 將下一個字符轉義
&lt;br /&gt;[ABC]: 指定一個字符集
&lt;br /&gt;[^ABC]: 指定一個不在範圍內的字符集
&lt;br /&gt;&quot;A|B&quot;: 匹配條件A或條件B
&lt;br /&gt;(pattern): 匹配括號內的表達式，並作為匹配項
&lt;br /&gt;(?:pattern): 匹配括號內的表達式，但不作為匹配項
&lt;br /&gt;(?#...): 註釋，忽略
&lt;br /&gt;(?=pattern): 預查，若之後的內容匹配表達式，則成立
&lt;br /&gt;(?!pattern): 預查，若之後的內容不匹配表達式，則成立
&lt;br /&gt;(?P&lt;name&gt;pattern): 給一個匹配項命名
&lt;br /&gt;(?P=name)： 匹配與之前命名的匹配項內容相同的部分
&lt;br /&gt;如：s=&#39;12a34a56&#39;
&lt;br /&gt;&amp;nbsp;&amp;nbsp; re.findall(&#39;12(?P&lt;xxx&gt;.).*(?P=xxx)56)&#39;, s)
&lt;br /&gt;&amp;nbsp;&amp;nbsp; (?P&lt;xxx&gt;.)匹配到a，則(?P=xxx)的內容也必須為a時才pp
&lt;br /&gt;(?iLmsux): 設置I,L,M,S,U,or X標記
&lt;br /&gt;轉義符說明:
&lt;br /&gt;\A: 匹配開頭
&lt;br /&gt;\Z: 匹配結尾
&lt;br /&gt;\b: 匹配開頭或結尾的空字符串，通常是指單詞邊界 ？？？
&lt;br /&gt;\B: 匹配非開頭和結尾的空字符串，通常是指非單詞邊界？？？
&lt;br /&gt;\d: 匹配一個數字。等價於[0-9]
&lt;br /&gt;\D: 匹配一個非數字。等價於[^0-9]
&lt;br /&gt;\s: 匹配一個空白字符。等價於[ \t\n\r\f\v]
&lt;br /&gt;\S: 匹配一個非空白字符。等價於[^ \t\n\r\f\v]
&lt;br /&gt;\w: 匹配一個字母數字字符。等價於[a-zA-Z0-9_]
&lt;br /&gt;\W: 匹配一個非字母數字字符。等價於[^a-zA-Z0-9_]
&lt;br /&gt;\\: 匹配一個反斜杠
&lt;br /&gt;\f: 匹配一個換頁符。等價於\x0C 和 \cL
&lt;br /&gt;\n: 匹配一個換行符。等價於\x0A 和 \cJ
&lt;br /&gt;\r: 匹配一個回車符。等價於\x0D 和 \cM
&lt;br /&gt;\t: 匹配一個制表符。等價於\x09 和 \cI
&lt;br /&gt;\v: 匹配一個垂直制表符。等價於\x0B 和 \cK
&lt;br /&gt;\xHH: 匹配 HH，其中 HH 為十六進制轉義值
&lt;br /&gt;\uHHHH: 匹配 HHHH，其中 HHHH 是一個用四個十六進制數字表示的Unicode字符
&lt;br /&gt;常用匹配：
&lt;br /&gt;匹配中文字符的正則表達式： [\u4e00-\u9fa5]
&lt;br /&gt;匹配雙字節字符(包括漢字在內)：[^\x00-\xff]
&lt;br /&gt;匹配空行的正則表達式：\n[\s| ]*\r
&lt;br /&gt;匹配首尾空格的正則表達式：(^\s*)|(\s*$)
&lt;br /&gt;匹配Email地址的正則表達式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
&lt;br /&gt;匹配網址URL的正則表達式：^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*\\?
\\S*)?$
&lt;br /&gt;匹配帳號是否合法(字母開頭，允許5-16字節，允許字母數字下劃線)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$
&lt;br /&gt;匹配國內電話號碼：(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
&lt;br /&gt;匹配騰訊QQ號：^[1-9]*[1-9][0-9]*$
&lt;br /&gt;模塊使用：
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; match:
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; search:
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sub: 替換
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; subn: 替換並返回替換的次數
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; split: 分隔
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; findall: 查找所有匹配項
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; compile:
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; purge:
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; escape:
&lt;br /&gt;可選參數：
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; I(IGNORECASE): 忽略大小寫
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; L(LOCALE): 使用\w,\W,\b,\B時依據本地配置？？？
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; M(MULTILINE): 多行，&quot;^&quot;匹配每行的開頭，&quot;$&quot;匹配每行的末尾
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; S(DOTALL): 使&quot;.&quot;匹配包含換行符在內的任意字符
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; X(VERBOSE): 忽略空白處和註釋內容
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; U(UNICODE): 使\w,\W,\b,\B依靠UNICODE編碼
&lt;br /&gt; 
&lt;/xxx&gt;&lt;/xxx&gt;&lt;/name&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/2458138668903308422/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2012/09/python-re.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/2458138668903308422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/2458138668903308422'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2012/09/python-re.html' title='python re 正則表達式 模組'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-6172807503720445695</id><published>2012-09-23T22:04:00.001-07:00</published><updated>2012-09-23T22:04:47.783-07:00</updated><title type='text'>python time 模組</title><content type='html'>time模組
&lt;br /&gt;&amp;nbsp; 這個模組定義的都是和時間、時鐘、計時相關的內容：
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; clock():返回第一次調用到當前調用時的計時，是以秒為單位的浮點數
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; localtime([t]):返回時間的數組，有9個元素(年,月,日,時,分,秒,星期幾,當年的第幾天,是否夏令時)，星期一為0
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mktime(tlist):是localtime的反函數，將一個9元數組轉成一個浮點時間值，後3個元素，系統會自己調整
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sleep(n):掛起線程n秒
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; strftime(fstring[,t]):格式化顯示時間，fstring常用關鍵字：
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %a,%A:星期的縮寫，全拼
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %b,%B:月份的縮寫，全屏
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %c,%x,%X:本地默認表示法（日期時間，日期，時間）
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Y(%y:2位),%m,%d,%H,%M,%S:年月日時分秒
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %w:星期，0為星期天
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; strptime(string[,format]):將字符串解析為9元素的時間數組
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; time():返回當前時間值，浮點數
&lt;br /&gt;&amp;nbsp; 更高級的用法可以使用&lt;b&gt;datetime&lt;/b&gt;模組，創建其中的date,time物件，可以進行加減操作，得出timedelta對象。
</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/6172807503720445695/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2012/09/python-time.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/6172807503720445695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/6172807503720445695'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2012/09/python-time.html' title='python time 模組'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-5822547919924493825</id><published>2012-09-23T22:01:00.000-07:00</published><updated>2012-09-23T22:01:15.745-07:00</updated><title type='text'>python 內建模組 built-in</title><content type='html'>python 本身內建無需用 import 導入的模組 &lt;br /&gt;
built-in&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; eval(expr[,globals[,locals]]):執行一段代碼，並返回結果
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exec(expr[,globals[,locals]]):執行一段代碼
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; execfile(file[,globals[,locals]]):執行一個文件
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; filter(func,list):使用函數來過濾list，返回滿足要求的list元素組
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; getattr(obj,name[,default]):獲取對象的屬性，若沒有該屬性，則返回默認值
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; setattr(obj,name,value):設置對象的屬性，若沒有該屬性，則異常
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hasattr(obj,name):返回對象是否有指定屬性
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; input([prompt]):提示控制臺輸入，必須輸入常量或變量，若想直接輸入字符串，需要使用引號括起來
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; raw_input([prompt]):提示控制臺輸入，直接輸入數字或字符串
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; open(filename,mode):打開文件，mode可以為：w,r,a，若想同時讀寫，則加上+，若想以二進制讀寫，則加上b
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reload(module):再次導入已導入過的模塊
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type(obj):返回一個對象的類型
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; zip(seq1,...):將若幹個元組進行合並，長度以元組中的最短的為準
</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/5822547919924493825/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2012/09/python-built-in.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/5822547919924493825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/5822547919924493825'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2012/09/python-built-in.html' title='python 內建模組 built-in'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-2220946231174828968</id><published>2012-09-23T21:58:00.000-07:00</published><updated>2012-09-23T21:58:41.874-07:00</updated><title type='text'>python sys 模組 操作方式</title><content type='html'>&lt;b&gt;sys模組&lt;/b&gt;&lt;br /&gt;&amp;nbsp; 系統信息和方法模組，提供了很多實用的變量和方法：
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; argv:命令行參數List，第一個元素是程序本身路徑
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; builtin_module_names:&lt;span class=&quot;hilite1&quot;&gt;Python&lt;/span&gt;解釋器導入的模塊
列表
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; modules.keys():返回所有已經導入的模塊列表
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exc_info():獲取當前正在處理的異常類
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exc_type、exc_value、exc_traceback:當前處理的異常詳細信息
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; executable:&lt;span class=&quot;hilite1&quot;&gt;Python&lt;/span&gt;解釋程序路徑
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit(n):退出程序，正常退出時exit(0)
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; getwindowsversion():獲取Windows的版本
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hexversion:獲取&lt;span class=&quot;hilite1&quot;&gt;Python&lt;/span&gt;解釋程序的版本值，16進制格式
如：0x020403F0
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; version:獲取&lt;span class=&quot;hilite1&quot;&gt;Python&lt;/span&gt;解釋程序的版本信息
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxint:最大的Int值
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxunicode:最大的Unicode值
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; modules:返回系統導入的模塊字段，key是模塊名，value是模塊
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; path:返回模塊的搜索路徑，初始化時使用PYTHONPATH環境變量的值
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; platform:返回操作系統平臺名稱
</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/2220946231174828968/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2012/09/python-sys.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/2220946231174828968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/2220946231174828968'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2012/09/python-sys.html' title='python sys 模組 操作方式'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-8944041853616458132</id><published>2012-09-23T21:54:00.002-07:00</published><updated>2012-09-23T21:54:39.342-07:00</updated><title type='text'>python os 模組 操作方式</title><content type='html'>&lt;b&gt;os模組:
&lt;/b&gt;&lt;br /&gt;&amp;nbsp; os模組包裝了不同操作系統的通用接口，使用戶在不同操作系統下，可以使用相同的函數接口，返回相同結構的結果。
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp; os.name:返回當前操作系統名稱（&#39;posix&#39;, &#39;nt&#39;, &#39;os2&#39;, &#39;mac&#39;, &#39;ce&#39; or &#39;riscos&#39;）
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp; os中定義了一組文件、路徑在不同操作系統中的表現形式參數，如
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; os.sep（文件夾分隔符，windows中是 \ ）
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; os.extsep（擴展名分隔符，windows中是 . ）
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; os.pathsep（目錄分隔符，windows中是 ; ）
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; os.linesep（換行分隔符，windows中是 \r\n ）
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp; os中有大量文件、路徑操作的相關函數，如：
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; listdir(path):列舉目錄下的所有文件
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; makedir(path):創建文件夾，註：創建已存在的文件夾將異常
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; makedirs(path):遞歸式的創建文件夾，註：創建已存在的文件夾將異常
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; remove(filename):刪除一個文件
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rmdir(path):刪除一個文件夾，註：刪除非空的文件夾將異常
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; removedirs(path):遞歸的刪除文件夾，直到有一級的文件夾非空，註：文件夾路徑不能以&#39;\&#39;結束
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rename(src,dst):給文件或文件夾改名（可以改路徑，但是不能覆蓋目標文件）
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; renames(src,dst):遞歸式的給文件或文件名改名
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; walk(path):列舉path下的所有文件、文件夾
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp; os中與進程相關的操作，如：
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; execl(path):運行一個程序來替代當前進程，會阻塞式運行
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _exit(n):退出程序
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; startfile(filename):用與文件關聯的程序運行，關聯程序打開後，立即返回
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; system(cmd):運行一個程序或命令，會立即返回，並在cmd執行完成後，會返回cmd退出代碼
&lt;br /&gt;
&lt;br /&gt;&amp;nbsp; os.path&lt;br /&gt;
在不同的操作系統中調用不同的模組，是一個可import的模組，這個模組中提供很多有用的操作：
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; abspath(path):返回path的絕對路徑，若path已經是絕對路徑了，則保持。
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; basename(path):返回path中的文件名。
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; commonprefix(list):返回list中的統一前綴，用於獲得一組字符串的左起相同的內容
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dirname(path):返回path中的文件夾部分，結果不包含&#39;\&#39;
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exists(path):文件或文件夾是否存在
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; getatime(path):文件或文件夾的最後訪問時間，從新紀元到訪問時的秒數
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; getmtime(path):文件或文件夾的最後修改時間
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; getctime(path):文件或文件夾的創建時間
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; getsize(path):文件或文件夾的大小，若是文件夾返回0
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; isabs(path):返回是否是絕對路徑
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; isfile(path):返回是否是文件路徑
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; isdir(path):返回是否是文件夾路徑
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; islink(path):返回是否是快捷方式
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; join(path1,path2,...):將path進行組合，若其中有絕對路徑，則之前的path將被刪除
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; normcase(path):轉換路徑中的間隔符
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; normpath(path):轉換路徑為系統可識別的路徑
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; realpath(path):轉換路徑為絕對路徑
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; split(path):將路徑分解為(文件夾,文件名)
&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; splitext(path):將路徑分解為(其余部分,.擴展名)，若文件名中沒有擴展名，擴展名部分為空字符串
&lt;br /&gt;&amp;nbsp; 在操作與系統不支持的對象時，拋出OSError異常。
</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/8944041853616458132/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2012/09/python-os.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/8944041853616458132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/8944041853616458132'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2012/09/python-os.html' title='python os 模組 操作方式'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-5574279329266234645</id><published>2012-09-21T23:28:00.003-07:00</published><updated>2012-09-21T23:54:05.395-07:00</updated><title type='text'>快速關螢幕</title><content type='html'>&lt;br /&gt;
&amp;nbsp;用自已的手按螢幕開關，不然就得靠軟體設定一下快速鍵&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;系統支援：&lt;/b&gt;Windows XP/Vista/Win7&lt;/li&gt;
&lt;li&gt;&lt;b&gt;官方網站：&lt;/b&gt;&lt;a href=&quot;http://www.sdsoftware.org/software/blacktop/&quot; target=&quot;_blank&quot;&gt;http://www.sdsoftware.org/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
BlackTop 的功能很簡單，安裝好之後即可提供一個鍵盤快速鍵組合「Ctrl」+「Alt」+「b」，當我們按下後即可馬上關閉螢幕、停止顯示畫面。等要用電腦時，動一動滑鼠或隨便按一下鍵盤上的任意按鍵，即可恢復使用。</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/5574279329266234645/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2012/09/blog-post_21.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/5574279329266234645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/5574279329266234645'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2012/09/blog-post_21.html' title='快速關螢幕'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-7588979652053917119</id><published>2012-09-21T23:23:00.005-07:00</published><updated>2012-09-21T23:53:49.304-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="休眠"/><category scheme="http://www.blogger.com/atom/ns#" term="省電"/><category scheme="http://www.blogger.com/atom/ns#" term="電腦"/><title type='text'>讓電腦快速休眠 省電大作戰</title><content type='html'>&amp;nbsp; 有時只是短暫離開電腦一下！&lt;br /&gt;
關機重開，又需重新載入系統，再開原本在用的應用程式，會花費不少時間，&lt;br /&gt;
不關又有點浪費電！&lt;br /&gt;
&lt;br /&gt;
此時讓電腦快速進入休眠狀態，不失為一舉二得的好辦法^^&lt;br /&gt;
&lt;br /&gt;
WIN7 系統&lt;br /&gt;
&lt;br /&gt;
桌面滑鼠右鍵→新增(w)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieUQm2VMAzWIBdXmb3slDIHb5N0_q6xTfZ5JezVih8fM17r40-S6DPCCmbiG180sRzhtwLXA5YHW6nJeaZqPYXiThAGiu-HlbAK9PyB_1TbhZplS2AjfjaigDNEf3HwHlAliT3iIl3xq60/s1600/.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieUQm2VMAzWIBdXmb3slDIHb5N0_q6xTfZ5JezVih8fM17r40-S6DPCCmbiG180sRzhtwLXA5YHW6nJeaZqPYXiThAGiu-HlbAK9PyB_1TbhZplS2AjfjaigDNEf3HwHlAliT3iIl3xq60/s1600/.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
點選 捷徑(s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuY4Dt9GUPHAGlyZCRgztpdsG3vGfSee1AmwXhRU-_5AR9z_yRvF4ZnAKJkpxrNZ-6UItcMuNL92ns39sbUcQ7NqSH4tDS7buhOk8gGc4iM_hPxW2YvsxSOMLvZzpBZrn-NgtO66ILRhkB/s1600/2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuY4Dt9GUPHAGlyZCRgztpdsG3vGfSee1AmwXhRU-_5AR9z_yRvF4ZnAKJkpxrNZ-6UItcMuNL92ns39sbUcQ7NqSH4tDS7buhOk8gGc4iM_hPxW2YvsxSOMLvZzpBZrn-NgtO66ILRhkB/s320/2.jpg&quot; width=&quot;178&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
輸入項目的位置:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsA53m8_snQrekQ8sCw_sTJjiIiocK5vvPOJsPqTLN3zcbrZbqEo65L9lXCUFKAZ4k1H4PyLZPnNA-2GMAoTS7O9YmdzNkSOMdHJfG3peVPSmoOyBSzjPxP_ZkFRHOxBmxPf8b0Nnq700j/s1600/3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsA53m8_snQrekQ8sCw_sTJjiIiocK5vvPOJsPqTLN3zcbrZbqEo65L9lXCUFKAZ4k1H4PyLZPnNA-2GMAoTS7O9YmdzNkSOMdHJfG3peVPSmoOyBSzjPxP_ZkFRHOxBmxPf8b0Nnq700j/s320/3.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
填入&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;rundll32.exe powrprof.dll,SetSuspendState Hibernate&lt;/span&gt; 下一步&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvu-FNNIRUr2ETMzOhzs9BEYLn6Q7YAjnm1lLfkBreAMcS0ftptmyNIPs13Irepccyfe6QJ7rjL48rFkM6uVX5gCAUR9cfQlxdkBaWNhurbz0mTgsBPTlIzaHavGpcPx3MASl-PBsqAre8/s1600/4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;243&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvu-FNNIRUr2ETMzOhzs9BEYLn6Q7YAjnm1lLfkBreAMcS0ftptmyNIPs13Irepccyfe6QJ7rjL48rFkM6uVX5gCAUR9cfQlxdkBaWNhurbz0mTgsBPTlIzaHavGpcPx3MASl-PBsqAre8/s320/4.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
捷徑的名稱填入「 休眠 」或 任何你想用的名稱都可&lt;br /&gt;
&lt;br /&gt;
再來點選 捷徑 右鍵→內容 可設一下 快捷鍵 增添方便性&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq2vNst7yMSViJGAZFb1dZ6kM57MxXJU5e_-Z0oHZU5XM5gEwCm3jgQXrC3mJ1FaAcQJ58tUmM0eHXBXs6EIV9_U0TEvne8JFE73d7CgqxGAlchkJ9oDniTR-Jbd5u0Lp-f44sUEby4JyV/s1600/5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq2vNst7yMSViJGAZFb1dZ6kM57MxXJU5e_-Z0oHZU5XM5gEwCm3jgQXrC3mJ1FaAcQJ58tUmM0eHXBXs6EIV9_U0TEvne8JFE73d7CgqxGAlchkJ9oDniTR-Jbd5u0Lp-f44sUEby4JyV/s320/5.jpg&quot; width=&quot;248&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/7588979652053917119/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2012/09/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/7588979652053917119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/7588979652053917119'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2012/09/blog-post.html' title='讓電腦快速休眠 省電大作戰'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieUQm2VMAzWIBdXmb3slDIHb5N0_q6xTfZ5JezVih8fM17r40-S6DPCCmbiG180sRzhtwLXA5YHW6nJeaZqPYXiThAGiu-HlbAK9PyB_1TbhZplS2AjfjaigDNEf3HwHlAliT3iIl3xq60/s72-c/.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-2011208363713390851</id><published>2012-08-11T13:18:00.000-07:00</published><updated>2012-08-11T13:18:04.781-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="closing"/><category scheme="http://www.blogger.com/atom/ns#" term="contextlib"/><category scheme="http://www.blogger.com/atom/ns#" term="with as"/><title type='text'>with as</title><content type='html'>要打開文件，我習慣照書本教的&lt;br /&gt;
&lt;pre&gt;&lt;span style=&quot;font-family: Lucida,Courier New;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;fobj&lt;/span&gt; &lt;span style=&quot;color: #0000c0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;filename&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #804000;&quot;&gt;&#39;r&#39;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
怕文件不存在，可能還得再加個捕捉錯誤&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;
&lt;/td&gt;&lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;&lt;pre&gt;&lt;span style=&quot;color: black; font-family: Lucida,Courier New;&quot;&gt;  1 
  2 
  3 
  4 
  5 
&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Lucida,Courier New;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;try&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: black;&quot;&gt;fobj&lt;/span&gt; &lt;span style=&quot;color: #0000c0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;filename&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #804000;&quot;&gt;&#39;r&#39;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;except&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;IOError&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;pass&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;font-family: Lucida,Courier New;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span style=&quot;font-family: Lucida,Courier New;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
但有了with as 就方便多了，可以&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;
&lt;/td&gt;&lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;&lt;pre&gt;&lt;span style=&quot;color: black; font-family: Lucida,Courier New;&quot;&gt;  1 
  2 
&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Lucida,Courier New;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;with&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;filename&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #804000;&quot;&gt;&#39;r&#39;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;as&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;fobj&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: black;&quot;&gt;do&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;something&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
為了讓class 也能使用，需添加二個函數__enter__和 __exit__&lt;br /&gt;
&lt;table border=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;
&lt;/td&gt;&lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;&lt;pre&gt;&lt;span style=&quot;color: black; font-family: Lucida,Courier New;&quot;&gt;  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Lucida,Courier New;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;A&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;__enter__&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #804000;&quot;&gt;&#39;in enter&#39;&lt;/span&gt;
    &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;__exit__&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;e_t&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;e_v&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;t_b&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #804000;&quot;&gt;&#39;in exit&#39;&lt;/span&gt;

&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;with&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;A&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;as&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #804000;&quot;&gt;&#39;in with&#39;&lt;/span&gt;


&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;enter&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;with&lt;/b&gt;&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;exit&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
使用模組contextlib，便不用構造__enter__和 __exit__&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;
&lt;/td&gt;&lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;&lt;pre&gt;&lt;span style=&quot;color: black; font-family: Lucida,Courier New;&quot;&gt;  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Lucida,Courier New;&quot;&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;from&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;contextlib&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;contextmanager&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;from&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;__future__&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;with_statement&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #0000c0;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;contextmanager&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;context&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #804000;&quot;&gt;&#39;entering the zone&#39;&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;try&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;         &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;yield&lt;/b&gt;&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;except&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;Exception&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;         &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #804000;&quot;&gt;&#39;with an error %s&#39;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;e&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;         &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;raise&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;e&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;         &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #804000;&quot;&gt;&#39;with no error&#39;&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;with&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;context&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;     &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #804000;&quot;&gt;&#39;----in context call------&#39;&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;
&lt;span style=&quot;color: black;&quot;&gt;entering&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;the&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;zone&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;context&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;call&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;-&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;with&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;no&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;error&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
官方範例&lt;br /&gt;
&lt;table border=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;
&lt;/td&gt;&lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;&lt;pre&gt;&lt;span style=&quot;color: black; font-family: Lucida,Courier New;&quot;&gt;  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
 14 
&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Lucida,Courier New;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;from&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;contextlib&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;contextmanager&lt;/span&gt;

&lt;span style=&quot;color: #0000c0;&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;contextmanager&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;def&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #804000;&quot;&gt;&quot;&amp;lt;%s&amp;gt;&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000c0;&quot;&gt;%&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;name&lt;/span&gt;
    &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;yield&lt;/b&gt;&lt;/span&gt;
    &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #804000;&quot;&gt;&quot;&amp;lt;/%s&amp;gt;&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000c0;&quot;&gt;%&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;name&lt;/span&gt;

&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;with&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;tag&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #804000;&quot;&gt;&quot;h1&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;    &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: #804000;&quot;&gt;&quot;foo&quot;&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: black;&quot;&gt;foo&lt;/span&gt;
&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
還有一個closing可在抓網頁資料時使用&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;
&lt;/td&gt;&lt;td align=&quot;right&quot; valign=&quot;top&quot;&gt;&lt;pre&gt;&lt;span style=&quot;color: black; font-family: Lucida,Courier New;&quot;&gt;  1 
  2 
  3 
  4 
  5 
  6 
&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;&lt;pre&gt;&lt;span style=&quot;font-family: Lucida,Courier New;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;from&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;contextlib&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;closing&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;urllib&lt;/span&gt;

&lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;with&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;closing&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;urllib&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;urlopen&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #804000;&quot;&gt;&#39;http://www.python.org&#39;&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;as&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;page&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
    &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;line&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;page&lt;/span&gt;&lt;span style=&quot;color: #0000c0;&quot;&gt;:&lt;/span&gt;
        &lt;span style=&quot;color: blue;&quot;&gt;&lt;b&gt;print&lt;/b&gt;&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;line&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/2011208363713390851/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2012/08/with-as.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/2011208363713390851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/2011208363713390851'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2012/08/with-as.html' title='with as'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5664097398013841018.post-7481314344224550978</id><published>2012-08-11T12:35:00.001-07:00</published><updated>2012-08-11T12:35:43.847-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="list"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>LIST的妙用</title><content type='html'>在&lt;a href=&quot;http://peterwolfwang.blogspot.tw/&quot;&gt;彼得．狼的獸窩 &lt;/a&gt;&amp;nbsp; 看到一遍文章覺得蠻有趣的！&lt;br /&gt;
&amp;nbsp;&lt;a href=&quot;http://peterwolfwang.blogspot.tw/2009/04/java-python.html&quot;&gt;Java &amp;amp; Python 程式碼疊疊樂之二&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
內容主要比較 python&amp;amp;java寫輸入一分數判定等級ABCDE那種&lt;br /&gt;
&lt;br /&gt;
這種東西常見的寫法大部分都是:&lt;br /&gt;
&lt;code&gt;#!/usr/bin/python &lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
# Filename: gradingRobotOne.py&lt;br /&gt;
&lt;br /&gt;
grade = raw_input(&quot;請輸入分數： &quot;)      #利用 raw_input 的函式取得鍵盤輸入&lt;br /&gt;
score = int(grade)                      #從 raw_input 取得的字串類型 (String) 資料，轉換為 int 的類型&lt;br /&gt;
print &quot;=====================&quot;&lt;br /&gt;
print &quot;您輸入的分數為：&quot;, score&lt;br /&gt;
&lt;br /&gt;
gradeLevel = &quot;未判定！&quot;                  #預設成績等級為「未判定！」&lt;br /&gt;
#利用判斷式把輸入的成績分等級&lt;br /&gt;
if score &amp;gt; 100 or score &amp;lt; 0:&lt;br /&gt;
print &quot;分數應該介於 0 到 100 之間！&quot;&lt;br /&gt;
elif score &amp;lt;= 100 and score &amp;gt;= 90:&lt;br /&gt;
gradeLevel = &quot;A&quot;&lt;br /&gt;
elif score &amp;lt;= 89 and score &amp;gt;= 80:&lt;br /&gt;
gradeLevel = &quot;B&quot;&lt;br /&gt;
elif score &amp;lt;= 79 and score &amp;gt;=70:&lt;br /&gt;
gradeLevel = &quot;C&quot;&lt;br /&gt;
elif score &amp;lt;= 69 and score &amp;gt;=60:&lt;br /&gt;
gradeLevel = &quot;D&quot;&lt;br /&gt;
else:&lt;br /&gt;
gradeLevel = &quot;F&quot;&lt;br /&gt;
&lt;br /&gt;
print &quot;成績評定為：&quot;, gradeLevel        #印出評定結果&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;那有趣的是，我看最後面有一個回文提供的寫法，蠻有智慧的！&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Grade = [&quot;E&quot;,&quot;D&quot;,&quot;C&quot;,&quot;B&quot;,&quot;A&quot;];&lt;br /&gt;Score = int(raw_input());&lt;br /&gt;print Grade[int((Score-51)/10)];&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;直接利用LIST的特性，判定成績，讓代碼大為減少！！！&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&amp;nbsp;&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://pythonnote.blogspot.com/feeds/7481314344224550978/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://pythonnote.blogspot.com/2012/08/list.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/7481314344224550978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5664097398013841018/posts/default/7481314344224550978'/><link rel='alternate' type='text/html' href='http://pythonnote.blogspot.com/2012/08/list.html' title='LIST的妙用'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>