tag:blogger.com,1999:blog-8500600295342742522024-03-13T22:23:50.909-07:00周蟒--中文Python程式語言部落gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.comBlogger57125tag:blogger.com,1999:blog-850060029534274252.post-16400430574894488132012-08-19T01:46:00.001-07:002012-08-19T02:23:36.700-07:00周蟒積木版已整合進Blockly經過幾個月改進,現在的周蟒積木版程式已經完全整合進Blockly,可以由官網的隱藏連結使用<br />
<br />
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
http://blockly-demo.appspot.com/blockly/demos/codetw/index.html</div>
<div>
<br /></div>
<div>
目前的版本已經將所有字串獨立出來放到一個檔案中。</div>
<div>
只要修改_messages.js檔案,就能換成各種自然語言版本。</div>
gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com1tag:blogger.com,1999:blog-850060029534274252.post-58176879538965655982012-06-16T16:39:00.004-07:002012-06-18T18:49:30.578-07:00Blockly Maze迷宮中文版<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivrxWD_9oVDCXvsC1hpNU-7iuqeD5g5e-T7_4Gh_odBal4oM9SmpI7RvFDF92Wy3J3_RlOn_PjL4VIt3QhasEO3Qh1H8NgQgVb0lYx3fOHp9n1kt_aef8QVTDa83xCOuNkw9swneIwDaw/s1600/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2012-06-17+%E4%B8%8A%E5%8D%887.33.03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivrxWD_9oVDCXvsC1hpNU-7iuqeD5g5e-T7_4Gh_odBal4oM9SmpI7RvFDF92Wy3J3_RlOn_PjL4VIt3QhasEO3Qh1H8NgQgVb0lYx3fOHp9n1kt_aef8QVTDa83xCOuNkw9swneIwDaw/s320/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2012-06-17+%E4%B8%8A%E5%8D%887.33.03.png" width="320" /></a></div>
<br />
中文化一下maze迷宮。透過程式積木來控制Google地圖小人在迷宮地圖上行走。<br />
<br />
<a href="http://www.gasolin.idv.tw/public/blockly/demos/mazetw/index.html">http://www.gasolin.idv.tw/public/blockly/demos/mazetw/index.html</a><br />
<br />
附上最直觀的解法。gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-35718301397862370112012-06-14T19:48:00.004-07:002012-06-18T18:49:15.468-07:00周蟒積木版的一些更新周蟒積木版是基於Blockly製作的中文視覺化編程版本,目前已開發的新功能如下:<br />
<br />
<b><br /></b><br />
<b>離線使用</b><br />
<br />
現在周蟒積木版已支援離線使用,只要連到<br />
<br />
<a href="http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html">http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html</a><br />
<br />
並將這網址設成書籤,這樣一來下次離線時也能使用。<br />
<br />
<b><br /></b><br />
<b>儲存/</b><b>載入</b><b>積木 </b><span style="background-color: white; color: red;">(已整合回Blockly)</span><br />
<br />
可參考<a href="http://zhpy.blogspot.tw/2012/06/blog-post_6170.html">加入'輸入'積木</a>,允許匯入其他人製作的程式。<br />
<b><br /></b><br />
<b><br /></b><br />
<b>保存最後編輯狀態 </b><span style="background-color: white; color: red;">(已整合回Blockly)</span><br />
<br />
之前在離開瀏覽器畫面、重新載入、或是按「上一頁」鍵後,目前編輯的積木會消失。<br />
現已透過localStorage儲存最後編輯狀態,在下次開啟時即自動讀入。<br />
<br />
並新增「清除」按鈕,按下按鈕後可清除畫面上的積木。<br />
<br />
<div>
<b><br /></b></div>
<div>
<b>提供輸入積木 </b><span style="background-color: white; color: red;">(已整合回Blockly)</span></div>
<div>
<br /></div>
<div>
可參考<a href="http://zhpy.blogspot.tw/2012/06/blog-post_6170.html">加入'輸入'積木</a>,允許製作文字互動遊戲(如猜數字)。</div>
<div>
<br /></div>
<br />
<b>對照範例</b><br />
<br />
依照「咬一口周蟒」裡的範例,用積木版重新做了一遍,可對照「咬一口周蟒」來學習。<br />
<br />
<ul>
<li><a href="http://zhpy.blogspot.tw/2012/06/blog-post_12.html">周蟒積木版範例(一)</a></li>
<li><a href="http://zhpy.blogspot.tw/2012/06/blog-post_3812.html">周蟒積木版範例(二)</a></li>
</ul>
<div>
<br /></div>
<div>
<b>語系無關的獨立XML</b></div>
<div>
<br /></div>
<div>
現在Blockly新版能產生與不同語系無關的獨立XML,周蟒積木版也已更新到最新的svn版本。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
另一個好消息是我已經取得 Blockly 的 committer 權限,會和 Blockly 的開發者合作地更緊密,這些功能也將儘快回饋給 Blockly。</div>
<div>
<br />
Maze迷宮<span style="background-color: white;">中文版</span><br />
<span style="background-color: white;"><br /></span><br />
可參考 <a href="http://zhpy.blogspot.tw/2012/06/blockly-maze.html">Blockly Maze迷宮中文版</a><br />
<br />
<a href="http://www.gasolin.idv.tw/public/blockly/demos/mazetw/index.html">http://www.gasolin.idv.tw/public/blockly/demos/mazetw/index.html</a><br />
<br />
<br /></div>gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-27255590839522368482012-06-12T07:40:00.001-07:002012-08-18T23:56:44.785-07:00周蟒積木版範例(二)2012/8/19 更新<br />
<br />
繼續試驗咬一口周蟒文件中的範例<br />
<br />
函式 https://code.google.com/p/zhpy/wiki/ZhpyFunctions<br />
<br />
簡單的自訂函式範例<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNpGW0TkTURJW_4cQIqnIrYIp3PajI9GgBI2MHDoXmd1ErbZofwzgQBgCxzsRsEmn92I15q_d4rtMfwnPlz6PRjoiLy_ALFnJu_9PudVBpcGqto7vp-v1VfceY16SPRC-tdJqqsQbk8NQ/s1600/2-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNpGW0TkTURJW_4cQIqnIrYIp3PajI9GgBI2MHDoXmd1ErbZofwzgQBgCxzsRsEmn92I15q_d4rtMfwnPlz6PRjoiLy_ALFnJu_9PudVBpcGqto7vp-v1VfceY16SPRC-tdJqqsQbk8NQ/s1600/2-1.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
非常完美。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
函式參數呼叫範例</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMRHSHWzCk7e325MUlMpbNulXKUukuH9oY_XszgxDU5v4WPrwGCj5g1NX9IJtF_fzFmy78PvMTO4czcZgede51Dl-e5GtJjKAGqvIhYyamiMaInLT-OK6tygY7ek5zCzI62NEDI7q0478/s1600/3-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="219" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMRHSHWzCk7e325MUlMpbNulXKUukuH9oY_XszgxDU5v4WPrwGCj5g1NX9IJtF_fzFmy78PvMTO4czcZgede51Dl-e5GtJjKAGqvIhYyamiMaInLT-OK6tygY7ek5zCzI62NEDI7q0478/s640/3-1.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
2012/8/19) 更新後已支援傳入參數。</div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: red;"><br /></span></div>
<br />
局部變量範例<br />
<br />
<span style="color: red;">目前不支援局部變量,變量全為全局變量。</span><br />
<br />
<br />
模組 https://code.google.com/p/zhpy/wiki/ZhpyModules<br />
<br />
<span style="color: red;">目前不支援 import 模組。</span><br />
<br />
<br />
資料結構 https://code.google.com/p/zhpy/wiki/DataStructure<br />
<br />
購物清單範例<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM9vstyt5t7_kIRIg4VNlTgQDpySU8L-AubEd1anfKH4ddCrl15-TJnuYGd1ZCR-gBgwTr0t37moC5gxeDpjn4XUt-C18f70earrFeZbCAYzKhNA6Nv8wh7DaVlHv2sdXfsT3SxjKZ8xk/s1600/2-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="152" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM9vstyt5t7_kIRIg4VNlTgQDpySU8L-AubEd1anfKH4ddCrl15-TJnuYGd1ZCR-gBgwTr0t37moC5gxeDpjn4XUt-C18f70earrFeZbCAYzKhNA6Nv8wh7DaVlHv2sdXfsT3SxjKZ8xk/s320/2-4.png" width="320" /></a></div>
<br />
<br />
沒有列表排序(sort)積木、刪除列表項目積木。<br />
<br />
<br />
為了生成各種語言程式,Blockly目前並未支援各語言特有的一些型別(type)與操作。也不支援較高階組織程式的方式。當然這些都可以自行訂製。目前看起來Blockly程式積木塊的定義方式很清晰,經過實際驗證,訂製成中文版也完全可行。<br />
<br />
看來周蟒積木版有持續發展的可能。<br />
<br />gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-8838445046539662842012-06-12T05:56:00.001-07:002012-08-19T00:02:01.533-07:00周蟒積木版範例(一)要驗證積木版這個概念行不行得通,就是把之前寫的咬一口周蟒的範例拿來再做一遍,看看能不能跑<br />
<br />
下載與安裝 https://code.google.com/p/zhpy/wiki/DownloadInstall<br />
<br />
學習程式的第一個範例 https://code.google.com/p/zhpy/wiki/ExampleHello<br />
<div>
<br /></div>
<div>
<br /></div>
<br />
不用安裝,直接到 http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html 執行<br />
<br />
開了就是預設的編輯器。也不用適應額外的編輯器<br />
<br />
Hello world 範例如下<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbB45b389Kh_FPHGgh_zz1ehyKZsuOg3z_XnqWRRphFe7QGisTtTipmoloGbkz6ROyCI4-5YhmiSGdudkFef0c2rseUfGvZxRZbR-ciRsb1uoFwEto0j-zbAfAli476kHLdvRCRpERIsw/s1600/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2012-06-12+%E4%B8%8B%E5%8D%887.24.59.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbB45b389Kh_FPHGgh_zz1ehyKZsuOg3z_XnqWRRphFe7QGisTtTipmoloGbkz6ROyCI4-5YhmiSGdudkFef0c2rseUfGvZxRZbR-ciRsb1uoFwEto0j-zbAfAli476kHLdvRCRpERIsw/s1600/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2012-06-12+%E4%B8%8B%E5%8D%887.24.59.png" /></a></div>
<br />
學習過程中不用再去學習quote、留白。要看「印出」語句的功能,只要將滑鼠移到對應積木上一陣子,就會出現功能說明(英文)。<br />
<br />
<br />
基礎觀念 https://code.google.com/p/zhpy/wiki/BasicConcept<br />
<br />
印出變數範例如下<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhNz8S5sZYkeqLB7xJe6i5OVsLRJ-w03d0lUCiRGet-CrAwSJ2Q6I5k46bBoN4E4yptXgrMWzRKSTDLi3_xu8zEoWG2dG7eqlQqp9klW9o8IqU1zfkBD9zeLHee2RElJfzC6gTL2CvJg4/s1600/1-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhNz8S5sZYkeqLB7xJe6i5OVsLRJ-w03d0lUCiRGet-CrAwSJ2Q6I5k46bBoN4E4yptXgrMWzRKSTDLi3_xu8zEoWG2dG7eqlQqp9klW9o8IqU1zfkBD9zeLHee2RElJfzC6gTL2CvJg4/s1600/1-2.png" /></a></div>
<br />
不需記憶有哪些運算元,要字串或數字時,從對應的積木區塊中挑選即可。<br />
<br />
目前版本的缺點是不支援copy/paste積木,每個積木都得從積木區塊中選取。<br />
<br />
<br />
運算符號和表達式 https://code.google.com/p/zhpy/wiki/OperatorExpressions<br />
<br />
算面積與周長範例如下<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUFRZu6Zm9djVIL__fFx_TRkClbelWuc6OEs4UpNqah0y0qgYCGo1QtWQhwD7RahYYnhVGQKc8SzF0szsc2P4ku6HGNa-dgeXJojIzvtzOeO7unMdyT5JlXb_CcW_VCF6ix5zgRgttFXA/s1600/1-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUFRZu6Zm9djVIL__fFx_TRkClbelWuc6OEs4UpNqah0y0qgYCGo1QtWQhwD7RahYYnhVGQKc8SzF0szsc2P4ku6HGNa-dgeXJojIzvtzOeO7unMdyT5JlXb_CcW_VCF6ix5zgRgttFXA/s320/1-3.png" width="320" /></a></div>
<br />
「建立字串使用」積木比較要稍微學習一下,但還算容易使用。<br />
<br />
<br />
控制流程 https://code.google.com/p/zhpy/wiki/ControlFlow<br />
<br />
猜數字範例如下<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOqtJciED4F9omyRiUsND-4K02pr5rQysApJRF_sN1kA_BuIrL1M7hUAGUn0KcpbT36R99Fb_LjeGso02LTuH45FYCOFCNg8GFXNFvRRG3gCKLVU1IZVOw1hyphenhyphenelekUMRZO9NAGvLqOwjM/s1600/1-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOqtJciED4F9omyRiUsND-4K02pr5rQysApJRF_sN1kA_BuIrL1M7hUAGUn0KcpbT36R99Fb_LjeGso02LTuH45FYCOFCNg8GFXNFvRRG3gCKLVU1IZVOw1hyphenhyphenelekUMRZO9NAGvLqOwjM/s320/1-4.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
2012/8/19更新) 新版本的輸入積木支援預設輸入型別(數字或文字):</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1GU7Aydq4QByjmooBc9G9iItzVlvrmImE7TmYcCRI8WgITwV8Ny-fNddqN81DaaZMCxR4A43v0J_a3UvPoNjT1lYkXeGF5xVkcRHpmEwJ1YR1JiWJk-g3pp8gb9hE2cwRW1Xia-Nnl1Y/s1600/1-4s.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="224" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1GU7Aydq4QByjmooBc9G9iItzVlvrmImE7TmYcCRI8WgITwV8Ny-fNddqN81DaaZMCxR4A43v0J_a3UvPoNjT1lYkXeGF5xVkcRHpmEwJ1YR1JiWJk-g3pp8gb9hE2cwRW1Xia-Nnl1Y/s320/1-4s.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />
在javascript上執行正常,但因為缺乏型別轉換(type conversion),產生的python script少了一個"int",不正確。<br />
<br />
猜數字迴圈範例如下<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_3ocrK2Qup30nfoChMt54VcirTaCy5DQ1m2I8eBeRtVDkNj_aaNv39VSnCmOa1NRH67qjgZANT-RWyCHJw0MjRrRKlHEbNJfeQIIRrBynWvHOx9js9FKdZdZgugAdCpeJ0kB3gExWNjU/s1600/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2012-06-12+%E4%B8%8B%E5%8D%888.42.13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="273" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_3ocrK2Qup30nfoChMt54VcirTaCy5DQ1m2I8eBeRtVDkNj_aaNv39VSnCmOa1NRH67qjgZANT-RWyCHJw0MjRrRKlHEbNJfeQIIRrBynWvHOx9js9FKdZdZgugAdCpeJ0kB3gExWNjU/s320/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2012-06-12+%E4%B8%8B%E5%8D%888.42.13.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
迴圈的使用效果讓我印象很深刻。<br />
<br />
for迴圈範例如下<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzszwtsIqe4OPaA_OsUfV2zEtvFqwvMOASD-2vlNCGEUv3emWr2exn2Qa3a32FyTxLxZIySTOHSCXpS6qio79FTMKjZIgTnqLusniXUrwZ4Qyn8FIcBx20hZIu05SvtKkuX_kR6V2CJPA/s1600/1-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzszwtsIqe4OPaA_OsUfV2zEtvFqwvMOASD-2vlNCGEUv3emWr2exn2Qa3a32FyTxLxZIySTOHSCXpS6qio79FTMKjZIgTnqLusniXUrwZ4Qyn8FIcBx20hZIu05SvtKkuX_kR6V2CJPA/s1600/1-6.png" /></a></div>
<br />
看起來還不錯。<br />
<br />
輸入範例如下<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKeZQZ-mZ9gw4eiOiI5ZKpLENnWuk9MgQ6ETY8ZnoMHcfihqS60ZEWzIUHsb-bmFbT5bZR4ZkU_1tsZEMIHMgDb9DCKDHRvOvQ39BezaDva7dgzGBd-7y8vsKTxClPG1X-PTavnqIAG5o/s1600/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2012-06-12+%E4%B8%8B%E5%8D%888.49.00.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="151" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKeZQZ-mZ9gw4eiOiI5ZKpLENnWuk9MgQ6ETY8ZnoMHcfihqS60ZEWzIUHsb-bmFbT5bZR4ZkU_1tsZEMIHMgDb9DCKDHRvOvQ39BezaDva7dgzGBd-7y8vsKTxClPG1X-PTavnqIAG5o/s320/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2012-06-12+%E4%B8%8B%E5%8D%888.49.00.png" width="320" /></a></div>
<br />
運作良好。<br />
<br />
<br />
在試驗範例的過程中,我也根據實際使用修正了一下語句,現在應該更接近周蟒了。<br />
<br />
因為不需要考慮輸入簡易度,「停止」(break)迴圈的另一個選擇是「繼續下一個」(continue)迴圈,比原本周蟒的「繼續」(continue)語句顯得更直白一些。<br />
<br />gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-13149880928105435412012-06-09T22:57:00.001-07:002012-06-09T22:57:09.963-07:00加入'輸入'積木<br />
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
周蟒積木版在「字串」分類中加上「輸入」積木,現在可以做文字互動遊戲啦。</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
但因為目前generator的限制, 現在只能用變量來接兩個語句,不能嵌套著用。</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS4_ayyim3BrRLAU3s8ttCqvFAPRT4g8gCae42frjft7zMJJMzZVdmgeF29HQCNJOBDxkcAF60Zhlrz0_qnp6ReNOA24v9y3Flvm-Qdr4UECLY-CE-A9piHk7FxqAOZPekuc94l-cafV0/s1600/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2012-06-10+%E4%B8%8B%E5%8D%881.51.19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS4_ayyim3BrRLAU3s8ttCqvFAPRT4g8gCae42frjft7zMJJMzZVdmgeF29HQCNJOBDxkcAF60Zhlrz0_qnp6ReNOA24v9y3Flvm-Qdr4UECLY-CE-A9piHk7FxqAOZPekuc94l-cafV0/s320/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2012-06-10+%E4%B8%8B%E5%8D%881.51.19.png" width="320" /></a></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
畫面右側也多加入了儲存/載入按鈕,但目前只有在Chrome瀏覽器上測試過。</div>gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-29651630731119820272012-06-09T18:17:00.003-07:002012-06-09T18:17:52.094-07:00可讀性<blockquote class="tr_bq">
Programs are meant to be read by humans and only incidentally for computers to execute<br /><blockquote>
- Don Knuth</blockquote>
</blockquote>gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-54175575026136057782012-06-09T06:44:00.000-07:002012-06-12T04:42:55.156-07:00周蟒積木版<br />
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
<a href="http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html">周蟒積木版</a> 集各種不實用編程(中文編程+視覺化編程)於一身 XD</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
透過拖拉積木的方式編程,結果可輸出為Python, Javascript等語言,並可在網頁上執行即時查看結果。</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIXxIVVS_2uF0WQqw_dH7qYrhU9x9cEqL9aCRKLInB4Hkr76-0A-kMqgD3GWF8YjQstNfMEqZawBkwqNyO0WA1kUEgY5zkv4W21Nu71KmQWrZoM7ilGni-S-sDbhH170kwYGbrBIAcPZw/s1600/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2012-06-09+%E4%B8%8B%E5%8D%889.43.11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="88" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIXxIVVS_2uF0WQqw_dH7qYrhU9x9cEqL9aCRKLInB4Hkr76-0A-kMqgD3GWF8YjQstNfMEqZawBkwqNyO0WA1kUEgY5zkv4W21Nu71KmQWrZoM7ilGni-S-sDbhH170kwYGbrBIAcPZw/s320/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2012-06-09+%E4%B8%8B%E5%8D%889.43.11.png" width="320" /></a></div>
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
這個版本是基於<a href="http://code.google.com/p/google-blockly/">google blockly</a>製作的, </div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
http://code.google.com/p/google-blockly/</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
<br /></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
為了支援中文編程,我協助 blockly 的 developer : </div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
* 將messaging抽出,方便i18n化</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
<div style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">
* 支援non ASCII變量名</div>
</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
* 加入在網頁上直接執行(透過javascript)功能</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
<br />
這些改進都已經commit進Blockly svn裡了。<br />
<br />
<span style="background-color: white;">周蟒</span>積木版跟周蟒的關係主要體現在<br />
* 目標都是中文編程<br />
* 盡量使用和<span style="background-color: white;">周蟒</span><span style="background-color: white;">一致的變量名</span><br />
* 一樣可輸出Python<br />
<br /></div>
<span style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px;">有興趣的朋友可以試玩看看</span><span style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px;">。</span><br />
<br />
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
<br />
與周蟒相比,周蟒積木版免去了打程式碼的功夫、<br />
能透過web使用,並提供更多種語言輸出(javascript,python)</div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 0px; padding: 0px; vertical-align: baseline;">
也許會對教小朋友學編程更有幫助?</div>
<div>
<br /></div>gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com1tag:blogger.com,1999:blog-850060029534274252.post-82222333061473767852011-06-25T07:02:00.000-07:002011-06-25T07:02:45.981-07:00周蟒支援Python3!今天參加完Pyctw 2011活動後,發佈了相容python3的<a href="http://pypi.python.org/pypi/zhpy3/">周蟒3.0.0a1</a><br />
<br />
版本代號 Tusk (<span class="Apple-style-span" style="background-color: #f9f9f9; font-family: sans-serif; font-size: 17px; line-height: 21px;">獠牙</span>)<br />
<br />
http://pypi.python.org/pypi/zhpy3/<br />
<br />
可以在python3環境使用<br />
<br />
$ easy_install zhpy3 <br />
<br />
命令來安裝<br />
<br />
所有之前周蟒的範例都能執行<br />
<br />
http://code.google.com/p/zhpy/source/browse/#hg%2Fzhpy3%2Fexamples<br />
<br />
目前周蟒3.0.0a1版和原周蟒(2.x)相比,還不完整,目前的特性有<br />
<br />
<ul><li>僅支援腳本執行</li>
<li>不支援匯入中文模組</li>
<li>不支援interpreter</li>
<li>不支援轉換成Python腳本</li>
</ul><br />
<br />
歡迎有興趣的人參與進來,學習python3的同時,也協助後進還不太懂英文卻想學寫程式的小朋友 :)<br />
http://code.google.com/p/zhpygasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com1tag:blogger.com,1999:blog-850060029534274252.post-71392097212781123742010-01-13T19:35:00.000-08:002010-01-13T20:14:12.927-08:00溫度換算(流程導向與物件導向)最近天氣冷到爆。身在國外的同事問台灣這邊的氣溫。由於法國那邊報出來的溫度是用華氏(F)來表示,而在台灣這是用攝氏(C)來表示,所以報給他的溫度得要先轉換一下再告訴他。<br />
<br />
剛好想起來很久沒寫文章了,就拿這個狀況題,來當做解釋流程導向與物件導向不同的例子吧 :)<br />
<br />
<br />
首先把國小物理課中所教的溫度計算轉換式寫出來,就是<br />
<br />
<blockquote>華氏溫度 = 攝氏溫度 * 9 / 5 + 32<br />
</blockquote><br />
上面這段是正確的周蟒程式,打開周蟒直譯器就可以直接得到運算結果 :) <br />
<br />
<br />
若是要重用這個運算,寫成程式碼式很好的方式。如果套用流程導向方法來寫程式,就是包成一個函式來用:<br />
<br />
<blockquote><pre>定義 轉換成華氏溫度(攝氏溫度值):
返回 攝氏溫度值 * 9 / 5 +32
</pre></blockquote><br />
在使用時,只要呼叫<br />
<br />
<blockquote>華氏溫度 = 轉換成華氏溫度(攝氏溫度值)<br />
</blockquote><br />
就可以得到結果。<br />
<br />
如果是套用物件導向方法,則是把上述的函式跟提供的值包在一起,可以這麼寫:<br />
<br />
<blockquote><pre>類別 攝氏溫度(物件):
定義 __初始化__(我, 溫度值):
攝氏溫度值 = 溫度值
定義 轉換成華氏溫度(我):
返回 攝氏溫度值 * 9 / 5 +32
</pre></blockquote><br />
使用時呼叫<br />
<br />
<blockquote>現在溫度 = 攝氏溫度(9)<br />
華氏溫度 = 現在溫度.轉換成華氏溫度()<br />
</blockquote><br />
也可以得到相同結果。gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-31497390110057673872009-12-07T01:32:00.000-08:002009-12-09T07:36:12.824-08:00周蟒 1.7.3 發佈周蟒 1.7.3 (代號 審判) 已發佈。可前往網站下載, 或使用<br /><br />easy_install -U zhpy<br /><br />命令來更新。<br /><br /><br />版本控制改用 Mercurial,支持「自个儿」語句。gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-11955578959576229272009-12-06T21:46:00.000-08:002009-12-07T01:02:13.346-08:00周蟒的新動態<div>最近終於又可以抽出時間,來好好改進一下周蟒。</div><div>接下來預計的改動如下:</div><div>
<br /></div>1. <a href="http://code.google.com/p/support/wiki/ConvertingSvnToHg">轉換</a>到使用 <a href="http://www.selenic.com/mercurial/">Mercurial</a> 分散式版本控制系統<div>2. 使用 <a href="http://pypi.python.org/pypi/distribute">Contribute</a> 來取代 <a href="http://pypi.python.org/pypi/setuptools">SetupTools</a> (Contribute 可以支援 Python 3)</div><div>
<br /></div><div>等轉換完之後,會開始試著完成使用 pyparsing3 來支援 python3 的工作。</div><div>
<br /></div><div>Update: Contribute 在 Ubuntu 上因為會試圖取代 easy_install 命令,所以安裝時會失效</div><div>改來試 <a href="http://pip.openplans.org/">pip</a> 看看好了。</div>gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-26447746806321104332009-08-16T21:17:00.000-07:002009-08-16T21:45:51.842-07:001.7.3 展望:Android 上跑周蟒開發中的 1.7.3 版本初步已可以在 Android Scripting Environment (ASE) 上跑, 如圖所示<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYA5S5fKOQTrjvi6Z3jbgmlgRw29HDR_CkpzsTL6oKxCqnyBDr7avyoWCfjRerEsua4LSihzKdQA01-1IrmfXK6A69UbNZySLLxlXD5Po8C6yA2aAGI7ln57xfpNrItTBKd0bA4LVvCqc/s1600-h/cosdroid.png"><img style="cursor:pointer; cursor:hand;width: 269px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYA5S5fKOQTrjvi6Z3jbgmlgRw29HDR_CkpzsTL6oKxCqnyBDr7avyoWCfjRerEsua4LSihzKdQA01-1IrmfXK6A69UbNZySLLxlXD5Po8C6yA2aAGI7ln57xfpNrItTBKd0bA4LVvCqc/s400/cosdroid.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5370782103583598642" /></a><br /><br />目前可以在 android 上啟動 interpreter, 但該環境或介面還無法輸入或顯示中文.<br />而且要直接在 Android 上跑 ooo.twpy/xxx.cnpy 還有些 encoding 問題, <br /><br />但可以透過 svn 中的 android.py (自行撰寫的 ASE android 函式庫 mockup)來在桌面端調試(example/droid/android.py),<br />直接在桌面端調試好後,用 "zhpy -p" 命令將周蟒程式轉換成 python 檔,再放到 Android 手機上去跑。<br /><br />上週在 Coscup 09 上也做了一些演示 Demo<br /><br /><iframe src="http://docs.google.com/present/embed?id=ajkxs9k6pqxr_938ffvzq8n2" frameborder="0" width="410" height="342"></iframe>gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-61076410697007642102009-08-10T22:47:00.000-07:002009-08-10T22:48:59.081-07:00周蟒 1.7.2 發佈<span class="Apple-style-span" style="font-size: 13px; color: rgb(51, 51, 51); line-height: 20px; ">周蟒 1.7.2 (代號 死神13) 已發佈。可前往<a href="http://code.google.com/p/zhpy/downloads/list" style="color: rgb(153, 153, 153); text-decoration: none; ">網站</a>下載, 或使用<br /><blockquote style="line-height: 1.3em; margin-top: 1em; margin-right: 20px; margin-bottom: 1em; margin-left: 20px; ">easy_install -U zhpy<br /></blockquote>命令來更新。<br /><br />相容 python 2.6,在 Windows、Ubuntu 上測試過。</span>gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-42920498919542132422009-05-09T08:13:00.001-07:002009-05-09T08:18:33.254-07:00台灣報稅試算 2009 版報稅季節又到了,雖然官方提供的網路報稅工具相當好用,<div>但有時不免對官方提供的工具心存懷疑,</div><div>深怕太過依賴官方工具,哪天政府在工具上偷偷動了些手腳,讓自己不知不覺間多交了點稅。</div><div><div><br /></div><div>因此自己在報稅時順便更新了周蟒版的 <a href="http://code.google.com/p/zhpy/downloads/list">台灣報稅試算 2009 版</a>,可供驗證</div><div><br /></div><div>檔案依然在官網下載區提供下載</div><div>http://code.google.com/p/zhpy/downloads/list</div><div><br /></div></div>gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-63565263250800458112008-12-15T23:54:00.000-08:002009-08-11T00:44:34.091-07:00用周蟒建立銀行帳戶類別我們以建立一個銀行帳戶模型為例,來學習寫作周蟒的類別與函式:<br /><br /><blockquote><pre>類別 帳戶(物件):<br /> 定義 __初始化__(金額):<br /> 餘額 = 金額<br /><br /> 定義 領錢(金額):<br /> 餘額 = 餘額 - 金額<br /><br /> 定義 存錢(金額):<br /> 領錢(-金額)<br /><br />定義 轉帳(來源帳戶, 目的帳戶, 金額):<br /> 來源帳戶.領錢(金額)<br /> 目的帳戶.存錢(金額)<br /><br />主程式:<br /> 撲滿 = 帳戶(2000)<br /> 錢包 = 帳戶(0)<br /> 轉帳(撲滿, 錢包, 50)<br /> 印出 撲滿.餘額<br /> 印出 錢包.餘額<br /></pre></blockquote><br />程式本身就自我解釋地很好了。<br /><br />輸出結果為:<br /><br />1950<br />50<br /><br />(例子取自 美麗程式)gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com1tag:blogger.com,1999:blog-850060029534274252.post-49331738058960247622008-11-12T17:57:00.001-08:002008-11-12T19:15:35.186-08:00周蟒上做測試ZoomQuiet 在 python-cn group 上分享了一篇 <a href="http://www.infoq.com/cn/articles/tdd-practice">TDD实践之实用主义</a>,建議周蟒在教學之外,也和 unittest 作結合。<br /><br />事實上早已經有在周蟒專案中使用到 unittest 的<a href="http://code.google.com/p/zwds/source/browse/trunk/zwds/core/test_yingyang.twpy">例子</a><br /><br />簡短的範例如:<br /><br /><pre><br />定義 範例(資料):<br /> 返回 資料<br /><br /># doctest<br />定義 測試_資料():<br /> 申明 範例("巧虎") == "巧虎"<br /></pre><br /><br />要測試時,先將程式碼轉成 python<br /><blockquote>$ zhpy -p</blockquote><br /><br />再輸入<br /><blockquote><br />$ nosetests<br />.<br />-------<br />OK<br /></blockquote><br /><br />即完成自動測試。gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-53563349031087456082008-09-11T00:08:00.000-07:002008-09-11T00:12:52.635-07:00周蟒 1.7.1 發佈周蟒 1.7.1 (代號 太陽) 已發佈。可前往<a href="http://code.google.com/p/zhpy/downloads/list">網站</a>下載, 或使用<br /><blockquote>easy_install -U zhpy<br /></blockquote>命令來更新。<br /><br />這是一個維護性質的更新。<br /><br />上一個版本(1.7) 在 <a href="http://code.google.com/p/zhpy/downloads/list">官方網站</a> 與 <a href="http://pypi.python.org/pypi/zhpy">pypi</a> <a href="http://code.google.com/p/zhpy/downloads/list"></a>下載次數總合,<br />首度超過 500 份。gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-17208620447299359592008-08-22T23:15:00.000-07:002008-08-23T07:19:55.081-07:00學習編程的寓言<blockquote>新手在程式莊園外徘徊。<br /><br />門房跟新手說:<br />「你要先買一本導覽手冊,我才準許你進來」。<br /><br />新手遞出了金幣,門房交給新手一本程式語言導覽手冊。<br /><br /><br />新手在程式殿堂外徘徊。<br /><br />門口的警衛跟新手說:<br />「你要能使用英語與其他人溝通,我才准許你進來」。<br /><br />新手學懂了英語,門口的警衛打開了門。<br /><br />程式的殿堂裡面,果然不出所料,<br /><br />已經擠滿了外國人。</blockquote>gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-82325092171040410552008-08-12T20:21:00.000-07:002008-08-12T23:21:18.039-07:00周蟒近期動態 (5~8月)<span style="font-size:180%;">數學表示法與周蟒</span><br /><br />Mr. Monkey 寫了篇 <a href="http://weijr-note.blogspot.com/2008/06/zhpy.html">zhpy 的另類用法</a><br /><br />利用周蟒 可以用 ini 擴充詞庫的特性,加入數學符號對應,使得程式中可以直接寫出諸如<br /><blockquote>print sin(π/4) ≠ √(2)/2</blockquote><br />這樣的語法,將收錄在下一版的周蟒範例中 (example/realmath)。<br /><span style="font-size:180%;"><br />文字 RPG 與周蟒<br /></span><br />文字 RPG 是使用 console 遊玩,沒有圖片,遊戲裡面的互動與戰鬥都是以文字來表示的一種古早遊戲方式。基於一個德國人寫的 textrpg 模組, 我也寫了篇<br /><a href="http://inet6.blogspot.com/2008/07/rpg-textrpg.html"><span style="font-weight: bold;"></span>給我五分鐘,教你用中文腳本寫一個 RPG (使用 TextRPG)</a><br /><span style="font-size:180%;"><br />Crunchy 與周蟒</span><br /><br /><a href="http://crunchy.googlecode.com/">Crunchy</a> 是一個網頁介面的系統,可以在教學文章中的 python 語言區塊後端直接附上一個互動式 shell,讓讀者可以直接在同個頁面試驗。目前支援 python 2.4 以上環境。<br /><br />因為 Crunchy 也是基於 utf-8 編碼,因此要讓 Crunchy 支援周蟒相當容易, 只要在原始碼中加上兩行敘述:<br /><br />crunchy/src/interpreter.py<br /><blockquote><pre><br />class InteractiveInterpreter(object):<br />....<br />def runsource(self, source, filename="User's code", symbol="single"):<br />....<br />try:<br /> <span style="font-weight: bold;"> from zhpy import convertor</span><br /><span style="font-weight: bold;"> source = convertor(source)</span><br /> code = self.compile(source, filename, symbol)<br /></pre></blockquote><br />如此即可在 crunchy 的網頁介面中輸入周蟒程式碼。gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-50339860779770288452008-05-21T01:16:00.000-07:002008-05-21T01:26:38.088-07:00周蟒 1.7 發佈,interpreter 自動完成, 紫蟒周蟒 1.7 (代號 戀人) 已發佈, 可前往<a href="http://code.google.com/p/zhpy/downloads/list">網站</a>下載, 或使用<br /><blockquote>easy_install -U zhpy<br /></blockquote>命令來更新.<br /><br />主要更新有<br /><ul><li><a href="http://zhpy.blogspot.com/2008/05/17-interpreter.html">interpreter 自動完成</a></li><li>拿掉從未使用的 '其':'self' 關鍵字對應<br /></li></ul>另外也歡迎 Bob Chao 加入周蟒專案, 近期他將帶給我們重新編排過的可下載 ODF/PDF 版 "咬一口 Python 程式語言" 文件.<br /><br />這幾天我也開了一個使用周蟒撰寫的術數專案 (主要是 <a href="http://code.google.com/p/zwds/">紫微斗數</a>, 中文專案名就取叫 "紫蟒" 好了 XD)<br />使用中文編程 (python) 來描述術數間的關係, 還可隨時利用測試工具 (nose) 來驗證, 實在是最合適不過.gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-9731608581957409732008-05-13T19:56:00.000-07:002008-05-20T20:28:37.781-07:00紫微蟒數我對術數的研究還不深,之前讀易經註釋時,才發現原來易經的每個卦象爻都能互相解釋;五行生剋關係也是如此反覆循環不息,奧妙處相當迷人。<br /><br />我的假設是能否將術數(斗數)物件導向化,嘗試用程式語言來檢驗,演示各種'代號'互相之間的關係(例如五行生剋關係)。<br /><br />因此在發展出周蟒(Python)中文程式語言時,也試著動手將術數物件導向化。<br /><br />首先的成果是<a href="http://code.google.com/p/zwds/wiki/ZiWei">紫微斗數排盤</a><br />http://code.google.com/p/zwds/wiki/ZiWei<br /><br />目前嘗試用周蟒(Python)程式語言寫紫微排盤程式。<br />程式的目的不是最快速的排盤,而是演示互相間的關係與推導。<br />沒有找到好的推導方式時,還是採用能找到的查表或計算法。<br /><br />排盤程式還沒完成, 但整個模型已具其形, (已能排到年干四化).<br />先拋出一些原始碼片段與文件供討論,<a href="http://code.google.com/p/zwds/wiki/ReadingGuide"> 完整原始碼與使用方法在此</a>.<br /><br />會用到 <a href="http://pyzh.googlecode.com/">pyzh 中文工具包</a>中的 lunarcalendar (農曆), 提供輸入西元生日, 自動轉農曆生日來排盤.<br /><br />對周蟒/術數有興趣者, 可以以此為基礎, 以中文描述將各種中華文化傳統命卜精粹加以程式化. 以做為推導研究之用.<br /><br /><br />最後也請大家一起為大地震受災的人們祈禱, 南無阿彌陀佛.gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-83240902699241561042008-05-08T20:21:00.000-07:002008-05-15T22:09:17.289-07:00關於中文本地化工具包<span class="fixed_width" style="font-family:Courier,Monospaced;">googlecode 上有一個名稱跟周蟒(zhpy)很像的專案,叫做 <a href="http://pyzh.googlecode.com/">pyzh</a>。這個專案的目的是</span><span class="fixed_width" style="font-family:Courier,Monospaced;">提供一些中文本地化工具。</span><br /><span class="fixed_width" style="font-family:Courier,Monospaced;"><br />前幾天剛好寫周蟒有段需要將程式轉成簡體,但 mac 上沒有好的繁簡轉換工具 (fx3 不能用同文堂插件),於是花幾分鐘將 pyzh 專案的簡繁轉換工具弄成命令列可用了(很初步)。<br /></span><p><span class="fixed_width" style="font-family:Courier,Monospaced;"><a target="_blank" rel="nofollow" href="http://code.google.com/p/pyzh/">http://code.google.com/p/pyzh/</a><br /></span></p><p><span class="fixed_width" style="font-family:Courier,Monospaced;"><br /></span></p><p><span class="fixed_width" style="font-family:Courier,Monospaced;">相信大家對中文工具的需求是不少的,感覺中文本地化工具包這專案相當有用處,<br />只是還處於很早期階段,需要進一步加強。<br /></span></p><p><span class="fixed_width" style="font-family:Courier,Monospaced;">想知道大家各自以使用者或開發者的角度, 對於我們 pythoner 需要怎樣的中文工具包這件事上,是怎麼看待的?<br /></span></p><p><span class="fixed_width" style="font-family:Courier,Monospaced;">在此提出一些我對中文本地化工具包的想法:<br /></span></p><p><span class="fixed_width" style="font-family:Courier,Monospaced;">1. 工具要支援命令列 :<br />繁簡轉換工具、算字數工具、文本折行、農曆轉換工具都可以加以命令列化,變成一般通用的工具。<br />可能有些小工具也可以從 ulipad 中抽取獨立出來。<br /></span></p><p><span class="fixed_width" style="font-family:Courier,Monospaced;">2. 最好能提供 easy_install 安裝<br />easy_install 安裝的好處就不必多說了<br /></span></p><p><span class="fixed_width" style="font-family:Courier,Monospaced;">3. 共用 namespace<br />讓這些相關 lib 共用一個 namespace, (建議是 zhutils, 類同於 docutils),<br />然後用英文分類、命名調用。<br /></span></p><p><span class="fixed_width" style="font-family:Courier,Monospaced;">一方面也算擴大用戶群(老外也有機會來用),另一方面拼音的有侷限,例如 fanjian (--> 犯賤 ?) 對不習慣拼音的我來說看來相當不<br />雅。<br /></span></p><p><span class="fixed_width" style="font-family:Courier,Monospaced;">建議的簡單 namespace 分類法:<br /></span></p><p><span class="fixed_width" style="font-family:Courier,Monospaced;">zhutils - word # 文字相關<br /> - count # 算字數, 對應 wordcount<br /> - translate [pinyin | tw | cn] # 翻譯成 拼音, 繁中 ,簡中,<br />對應 word2pinyin, fanjian<br /> - cn_word # 簡中分詞<br /> - time # 轉干支計數, 用於算命?<br /> - datetime # 日期相關<br /> - .... 其他<br /></span></p><span class="fixed_width" style="font-family:Courier,Monospaced;">中文本地化工具包,大家怎麼看?<br /><br />update 2008/5/15:<br /></span><span class="fixed_width" style="font-family:Courier, Monospaced;">把整個 pyzh 大架構按照之前提出的思路修了一下, 整成了一個 zhutils 模塊, 以後可以用 pypi 來發佈. </span><span class="fixed_width" style="font-family:Courier, Monospaced;">現在所有 pyzh 模塊都在 zhutils 中, 所有副模塊分別歸類在 word(處理文字) 與 datetime(處理日期) 中. </span>gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-64003913626768599662008-05-06T01:40:00.000-07:002008-05-06T01:52:29.576-07:00周蟒 1.7 開發進度,interpreter 自動完成昨天用 rlcompleter 讓周蟒 interpreter 支援自動完成(打單字自動補全關鍵詞,打英出中),<br />例如任意打出 '印'、'print'、'pri'、'prin' 後,按下 tab 鍵, shell 中就自動換成 '印出' 一詞。<br /><br />以一段簡單的用迴圈印出資訊的程式碼為例:<br /><blockquote>>>> for i in range(10):<br />... print i<br /></blockquote>要達到等同於這段 python 程式碼的目的,在 zhpy interpreter 中,原本得輸入:<br /><blockquote>>>> 取 i 自 範圍(10):<br />... 印出 i<br /></blockquote>現在可以輸入<br /><blockquote>>>> for[tab] i in[tab] ran[tab](10):<br />... pri[tab] i</blockquote>每次按下 tab 鍵,interpreter 就會自動將 "for"、"in"、"range"、"print" 等關鍵字轉換成 "取"、"自"、"範圍"、"印出"等周蟒關鍵詞,大幅簡化輸入的次數。<br /><br />期待簡中開發者加入,協助增加利用拼音方式的自動完成。gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0tag:blogger.com,1999:blog-850060029534274252.post-25662087351042273552008-04-13T05:02:00.000-07:002008-04-13T05:03:30.731-07:00在 OSDC.tw 08 的演講在 OSDC.tw 08 的演講投影片在此<br /><br /><iframe src='http://docs.google.com/EmbedSlideshow?docid=ajkxs9k6pqxr_404fn3cpcfw' frameborder='0' width='410' height='342'></iframe>gasolinhttp://www.blogger.com/profile/16456291508293985431noreply@blogger.com0