六月 25, 2011

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 周蟒支援Python3!

今天參加完Pyctw 2011活動後,發佈了相容python3的周蟒3.0.0a1

版本代號 Tusk (獠牙)

http://pypi.python.org/pypi/zhpy3/

可以在python3環境使用

$ easy_install zhpy3

命令來安裝

所有之前周蟒的範例都能執行

http://code.google.com/p/zhpy/source/browse/#hg%2Fzhpy3%2Fexamples

目前周蟒3.0.0a1版和原周蟒(2.x)相比,還不完整,目前的特性有

  • 僅支援腳本執行
  • 不支援匯入中文模組
  • 不支援interpreter
  • 不支援轉換成Python腳本


歡迎有興趣的人參與進來,學習python3的同時,也協助後進還不太懂英文卻想學寫程式的小朋友 :)
http://code.google.com/p/zhpy

一月 13, 2010

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 溫度換算(流程導向與物件導向)

最近天氣冷到爆。身在國外的同事問台灣這邊的氣溫。由於法國那邊報出來的溫度是用華氏(F)來表示,而在台灣這是用攝氏(C)來表示,所以報給他的溫度得要先轉換一下再告訴他。

剛好想起來很久沒寫文章了,就拿這個狀況題,來當做解釋流程導向與物件導向不同的例子吧 :)


首先把國小物理課中所教的溫度計算轉換式寫出來,就是

華氏溫度 = 攝氏溫度 * 9 / 5 + 32

上面這段是正確的周蟒程式,打開周蟒直譯器就可以直接得到運算結果 :)


若是要重用這個運算,寫成程式碼式很好的方式。如果套用流程導向方法來寫程式,就是包成一個函式來用:

定義 轉換成華氏溫度(攝氏溫度值):
返回 攝氏溫度值 * 9 / 5 +32

在使用時,只要呼叫

華氏溫度 = 轉換成華氏溫度(攝氏溫度值)

就可以得到結果。

如果是套用物件導向方法,則是把上述的函式跟提供的值包在一起,可以這麼寫:

類別 攝氏溫度(物件):
定義 __初始化__(我, 溫度值):
攝氏溫度值 = 溫度值
定義 轉換成華氏溫度(我):
返回 攝氏溫度值 * 9 / 5 +32

使用時呼叫

現在溫度 = 攝氏溫度(9)
華氏溫度 = 現在溫度.轉換成華氏溫度()

也可以得到相同結果。

十二月 9, 2009

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 周蟒 1.7.3 發佈

周蟒 1.7.3 (代號 審判) 已發佈。可前往網站下載, 或使用

easy_install -U zhpy

命令來更新。


版本控制改用 Mercurial,支持「自个儿」語句。

十二月 7, 2009

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 周蟒的新動態

最近終於又可以抽出時間,來好好改進一下周蟒。
接下來預計的改動如下:

1. 轉換到使用 Mercurial 分散式版本控制系統
2. 使用 Contribute 來取代 SetupTools (Contribute 可以支援 Python 3)

等轉換完之後,會開始試著完成使用 pyparsing3 來支援 python3 的工作。

Update: Contribute 在 Ubuntu 上因為會試圖取代 easy_install 命令,所以安裝時會失效
改來試 pip 看看好了。

八月 16, 2009

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 1.7.3 展望:Android 上跑周蟒

開發中的 1.7.3 版本初步已可以在 Android Scripting Environment (ASE) 上跑, 如圖所示



目前可以在 android 上啟動 interpreter, 但該環境或介面還無法輸入或顯示中文.
而且要直接在 Android 上跑 ooo.twpy/xxx.cnpy 還有些 encoding 問題,

但可以透過 svn 中的 android.py (自行撰寫的 ASE android 函式庫 mockup)來在桌面端調試(example/droid/android.py),
直接在桌面端調試好後,用 "zhpy -p" 命令將周蟒程式轉換成 python 檔,再放到 Android 手機上去跑。

上週在 Coscup 09 上也做了一些演示 Demo

八月 11, 2009

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 用周蟒建立銀行帳戶類別

我們以建立一個銀行帳戶模型為例,來學習寫作周蟒的類別與函式:

類別 帳戶(物件):
定義 __初始化__(金額):
餘額 = 金額

定義 領錢(金額):
餘額 = 餘額 - 金額

定義 存錢(金額):
領錢(-金額)

定義 轉帳(來源帳戶, 目的帳戶, 金額):
來源帳戶.領錢(金額)
目的帳戶.存錢(金額)

主程式:
撲滿 = 帳戶(2000)
錢包 = 帳戶(0)
轉帳(撲滿, 錢包, 50)
印出 撲滿.餘額
印出 錢包.餘額

程式本身就自我解釋地很好了。

輸出結果為:

1950
50

(例子取自 美麗程式)

八月 10, 2009

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 周蟒 1.7.2 發佈

周蟒 1.7.2 (代號 死神13) 已發佈。可前往網站下載, 或使用

easy_install -U zhpy
命令來更新。

相容 python 2.6,在 Windows、Ubuntu 上測試過。

五月 9, 2009

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 台灣報稅試算 2009 版

報稅季節又到了,雖然官方提供的網路報稅工具相當好用,

但有時不免對官方提供的工具心存懷疑,
深怕太過依賴官方工具,哪天政府在工具上偷偷動了些手腳,讓自己不知不覺間多交了點稅。

因此自己在報稅時順便更新了周蟒版的 台灣報稅試算 2009 版,可供驗證

檔案依然在官網下載區提供下載
http://code.google.com/p/zhpy/downloads/list

十二月 15, 2008

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 生活化編程一起來 -- 用周蟒建立宅男模塊

由身邊事物開始學習物件導向,
有了周蟒,編程可以更生活化。

生活化編程這個 idea 的源起來自於一則學了 python 後就會飛起來的漫畫
http://xkcd.com/353/

在某地的討論過程中充滿了玩笑與歡樂,
發現學習 python 編程應該可以更有樂趣。


為了讓更模組更容易被理解, 所以使用周蟒.
當然也歡迎用 python 擴展:

我先丟一個基本範例,歡迎大家盡量擴展 XD


類別 宅男(男):
"""
http://zh.wikipedia.org/wiki/宅男 (通俗用法)
"""
定義 __初始化__(我):
我.知識=[keroro]

定義 把妹(我):
引發 尚未實作


聚合後完整的模塊會放在 zhpy.blogspot.com 上.

十一月 12, 2008

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 周蟒上做測試

ZoomQuiet 在 python-cn group 上分享了一篇 TDD实践之实用主义,建議周蟒在教學之外,也和 unittest 作結合。

事實上早已經有在周蟒專案中使用到 unittest 的例子

簡短的範例如:


定義 範例(資料):
返回 資料

# doctest
定義 測試_資料():
申明 範例("巧虎") == "巧虎"


要測試時,先將程式碼轉成 python
$ zhpy -p


再輸入

$ nosetests
.
-------
OK


即完成自動測試。

九月 11, 2008

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 周蟒 1.7.1 發佈

周蟒 1.7.1 (代號 太陽) 已發佈。可前往網站下載, 或使用

easy_install -U zhpy
命令來更新。

這是一個維護性質的更新。

上一個版本(1.7) 在 官方網站pypi 下載次數總合,
首度超過 500 份。

八月 23, 2008

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 學習編程的寓言

新手在程式莊園外徘徊。

門房跟新手說:
「你要先買一本導覽手冊,我才準許你進來」。

新手遞出了金幣,門房交給新手一本程式語言導覽手冊。


新手在程式殿堂外徘徊。

門口的警衛跟新手說:
「你要能使用英語與其他人溝通,我才准許你進來」。

新手學懂了英語,門口的警衛打開了門。

程式的殿堂裡面,果然不出所料,

已經擠滿了外國人。

八月 12, 2008

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 文摘

» 周蟒 1.5 之路

最近 weijr 寫了幾篇很有意思的文章:



weijr 提出了透過利用 python 會在程式檔開頭讀取編碼設定 (encoding) 的方法,來使用 python interpreter 直接執行如周蟒等程式,並且提出了基於周蟒 1.4 修改後的實做,其中許多修改很值得參考。

Python MagicCodec 0.1 裡有個大量修改過的周蟒 1.4 版本。

看到 weijr 願意修改 zhpy 並發佈一個自己的版本我還蠻開心的,這表示周蟒開始值得其他人花心力來修改了,也是種肯定。
但同時警覺到: 讓人寧願自己修改而不是發個 patch 給我們,也表示周蟒還有不足之處。

因為周蟒是採取測試驅動開發,而且目標是相容多個 python 版本與平台,
因此在周蟒實做中,我會避免使用 python 2.5 的語法或 python 2.6/3.0 時即將淘汰的語法,
而且代碼需要通過全部測試,從而保證釋出版本的質量,使用者才能放心地採用或自由修改。

周蟒本來就是一個採取測試驅動開發,集合大家創意的中文(python)程式語言,許許多多的功能都是由不同人貢獻出來(可以看 ChangeLog),才有今天的周蟒。

周蟒 1.5 將繼續重構,並同時加入一些更進階的關鍵字,也許會在這版本或下個版本加入透過 encoding 來使用 python 直接執行周蟒的方法。(如果 weijr 肯發個 patch 過來就更快啦 :D)

如果對周蟒原始碼有興趣,可以透過
svn co http://zhpy.googlecode.com/svn/trunk/
來取得原始碼

周蟒原始碼總是維持隨時都是可工作的。

» 周蟒近期動態 (5~8月)

數學表示法與周蟒

Mr. Monkey 寫了篇 zhpy 的另類用法

利用周蟒 可以用 ini 擴充詞庫的特性,加入數學符號對應,使得程式中可以直接寫出諸如

print sin(π/4) ≠ √(2)/2

這樣的語法,將收錄在下一版的周蟒範例中 (example/realmath)。

文字 RPG 與周蟒

文字 RPG 是使用 console 遊玩,沒有圖片,遊戲裡面的互動與戰鬥都是以文字來表示的一種古早遊戲方式。基於一個德國人寫的 textrpg 模組, 我也寫了篇
給我五分鐘,教你用中文腳本寫一個 RPG (使用 TextRPG)

Crunchy 與周蟒


Crunchy 是一個網頁介面的系統,可以在教學文章中的 python 語言區塊後端直接附上一個互動式 shell,讓讀者可以直接在同個頁面試驗。目前支援 python 2.4 以上環境。

因為 Crunchy 也是基於 utf-8 編碼,因此要讓 Crunchy 支援周蟒相當容易, 只要在原始碼中加上兩行敘述:

crunchy/src/interpreter.py

class InteractiveInterpreter(object):
....
def runsource(self, source, filename="User's code", symbol="single"):
....
try:
from zhpy import convertor
source = convertor(source)
code = self.compile(source, filename, symbol)

如此即可在 crunchy 的網頁介面中輸入周蟒程式碼。

五月 21, 2008

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 周蟒 1.7 發佈,interpreter 自動完成, 紫蟒

周蟒 1.7 (代號 戀人) 已發佈, 可前往網站下載, 或使用

easy_install -U zhpy
命令來更新.

主要更新有
另外也歡迎 Bob Chao 加入周蟒專案, 近期他將帶給我們重新編排過的可下載 ODF/PDF 版 "咬一口 Python 程式語言" 文件.

這幾天我也開了一個使用周蟒撰寫的術數專案 (主要是 紫微斗數, 中文專案名就取叫 "紫蟒" 好了 XD)
使用中文編程 (python) 來描述術數間的關係, 還可隨時利用測試工具 (nose) 來驗證, 實在是最合適不過.

五月 20, 2008

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 紫微蟒數

我對術數的研究還不深,之前讀易經註釋時,才發現原來易經的每個卦象爻都能互相解釋;五行生剋關係也是如此反覆循環不息,奧妙處相當迷人。

我的假設是能否將術數(斗數)物件導向化,嘗試用程式語言來檢驗,演示各種'代號'互相之間的關係(例如五行生剋關係)。

因此在發展出周蟒(Python)中文程式語言時,也試著動手將術數物件導向化。

首先的成果是紫微斗數排盤
http://code.google.com/p/zwds/wiki/ZiWei

目前嘗試用周蟒(Python)程式語言寫紫微排盤程式。
程式的目的不是最快速的排盤,而是演示互相間的關係與推導。
沒有找到好的推導方式時,還是採用能找到的查表或計算法。

排盤程式還沒完成, 但整個模型已具其形, (已能排到年干四化).
先拋出一些原始碼片段與文件供討論, 完整原始碼與使用方法在此.

會用到 pyzh 中文工具包中的 lunarcalendar (農曆), 提供輸入西元生日, 自動轉農曆生日來排盤.

對周蟒/術數有興趣者, 可以以此為基礎, 以中文描述將各種中華文化傳統命卜精粹加以程式化. 以做為推導研究之用.


最後也請大家一起為大地震受災的人們祈禱, 南無阿彌陀佛.

五月 15, 2008

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 關於中文本地化工具包

googlecode 上有一個名稱跟周蟒(zhpy)很像的專案,叫做 pyzh。這個專案的目的是提供一些中文本地化工具。

前幾天剛好寫周蟒有段需要將程式轉成簡體,但 mac 上沒有好的繁簡轉換工具 (fx3 不能用同文堂插件),於是花幾分鐘將 pyzh 專案的簡繁轉換工具弄成命令列可用了(很初步)。

http://code.google.com/p/pyzh/


相信大家對中文工具的需求是不少的,感覺中文本地化工具包這專案相當有用處,
只是還處於很早期階段,需要進一步加強。

想知道大家各自以使用者或開發者的角度, 對於我們 pythoner 需要怎樣的中文工具包這件事上,是怎麼看待的?

在此提出一些我對中文本地化工具包的想法:

1. 工具要支援命令列 :
繁簡轉換工具、算字數工具、文本折行、農曆轉換工具都可以加以命令列化,變成一般通用的工具。
可能有些小工具也可以從 ulipad 中抽取獨立出來。

2. 最好能提供 easy_install 安裝
easy_install 安裝的好處就不必多說了

3. 共用 namespace
讓這些相關 lib 共用一個 namespace, (建議是 zhutils, 類同於 docutils),
然後用英文分類、命名調用。

一方面也算擴大用戶群(老外也有機會來用),另一方面拼音的有侷限,例如 fanjian (--> 犯賤 ?) 對不習慣拼音的我來說看來相當不
雅。

建議的簡單 namespace 分類法:

zhutils - word # 文字相關
- count # 算字數, 對應 wordcount
- translate [pinyin | tw | cn] # 翻譯成 拼音, 繁中 ,簡中,
對應 word2pinyin, fanjian
- cn_word # 簡中分詞
- time # 轉干支計數, 用於算命?
- datetime # 日期相關
- .... 其他

中文本地化工具包,大家怎麼看?

update 2008/5/15:
把整個 pyzh 大架構按照之前提出的思路修了一下, 整成了一個 zhutils 模塊, 以後可以用 pypi 來發佈. 現在所有 pyzh 模塊都在 zhutils 中, 所有副模塊分別歸類在 word(處理文字) 與 datetime(處理日期) 中.

五月 6, 2008

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 周蟒 1.7 開發進度,interpreter 自動完成

昨天用 rlcompleter 讓周蟒 interpreter 支援自動完成(打單字自動補全關鍵詞,打英出中),
例如任意打出 '印'、'print'、'pri'、'prin' 後,按下 tab 鍵, shell 中就自動換成 '印出' 一詞。

以一段簡單的用迴圈印出資訊的程式碼為例:

>>> for i in range(10):
... print i
要達到等同於這段 python 程式碼的目的,在 zhpy interpreter 中,原本得輸入:
>>> 取 i 自 範圍(10):
... 印出 i
現在可以輸入
>>> for[tab] i in[tab] ran[tab](10):
... pri[tab] i
每次按下 tab 鍵,interpreter 就會自動將 "for"、"in"、"range"、"print" 等關鍵字轉換成 "取"、"自"、"範圍"、"印出"等周蟒關鍵詞,大幅簡化輸入的次數。

期待簡中開發者加入,協助增加利用拼音方式的自動完成。

四月 13, 2008

周蟒--中文Python程式語言部落
zhpy
周蟒--中文Python程式語言部落 is about »
» 在 OSDC.tw 08 的演講

在 OSDC.tw 08 的演講投影片在此

A Feedjack powered Planet
A Django site.