開發中的 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
最近 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/來取得原始碼
周蟒原始碼總是維持隨時都是可工作的。
數學表示法與周蟒
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 的網頁介面中輸入周蟒程式碼。
昨天用 rlcompleter 讓周蟒 interpreter 支援自動完成(打單字自動補全關鍵詞,打英出中),
例如任意打出 '印'、'print'、'pri'、'prin' 後,按下 tab 鍵, shell 中就自動換成 '印出' 一詞。
以一段簡單的用迴圈印出資訊的程式碼為例:
>>> for i in range(10):要達到等同於這段 python 程式碼的目的,在 zhpy interpreter 中,原本得輸入:
... print i
>>> 取 i 自 範圍(10):現在可以輸入
... 印出 i
>>> for[tab] i in[tab] ran[tab](10):每次按下 tab 鍵,interpreter 就會自動將 "for"、"in"、"range"、"print" 等關鍵字轉換成 "取"、"自"、"範圍"、"印出"等周蟒關鍵詞,大幅簡化輸入的次數。
... pri[tab] i
期待簡中開發者加入,協助增加利用拼音方式的自動完成。







