八月 19, 2012

周蟒--中文Python程式語言部落
zhpy
is about »
» 周蟒積木版已整合進Blockly

經過幾個月改進,現在的周蟒積木版程式已經完全整合進Blockly,可以由官網的隱藏連結使用


http://blockly-demo.appspot.com/blockly/demos/codetw/index.html

目前的版本已經將所有字串獨立出來放到一個檔案中。
只要修改_messages.js檔案,就能換成各種自然語言版本。

» 周蟒積木版範例(一)

要驗證積木版這個概念行不行得通,就是把之前寫的咬一口周蟒的範例拿來再做一遍,看看能不能跑

下載與安裝 https://code.google.com/p/zhpy/wiki/DownloadInstall

學習程式的第一個範例 https://code.google.com/p/zhpy/wiki/ExampleHello




不用安裝,直接到 http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html 執行

開了就是預設的編輯器。也不用適應額外的編輯器

Hello world 範例如下

學習過程中不用再去學習quote、留白。要看「印出」語句的功能,只要將滑鼠移到對應積木上一陣子,就會出現功能說明(英文)。


基礎觀念 https://code.google.com/p/zhpy/wiki/BasicConcept

印出變數範例如下


不需記憶有哪些運算元,要字串或數字時,從對應的積木區塊中挑選即可。

目前版本的缺點是不支援copy/paste積木,每個積木都得從積木區塊中選取。


運算符號和表達式 https://code.google.com/p/zhpy/wiki/OperatorExpressions

算面積與周長範例如下


「建立字串使用」積木比較要稍微學習一下,但還算容易使用。


控制流程 https://code.google.com/p/zhpy/wiki/ControlFlow

猜數字範例如下


2012/8/19更新) 新版本的輸入積木支援預設輸入型別(數字或文字):



在javascript上執行正常,但因為缺乏型別轉換(type conversion),產生的python script少了一個"int",不正確。

猜數字迴圈範例如下


迴圈的使用效果讓我印象很深刻。

for迴圈範例如下


看起來還不錯。

輸入範例如下

運作良好。


在試驗範例的過程中,我也根據實際使用修正了一下語句,現在應該更接近周蟒了。

因為不需要考慮輸入簡易度,「停止」(break)迴圈的另一個選擇是「繼續下一個」(continue)迴圈,比原本周蟒的「繼續」(continue)語句顯得更直白一些。

八月 18, 2012

周蟒--中文Python程式語言部落
zhpy
is about »
» 周蟒積木版範例(二)

2012/8/19 更新

繼續試驗咬一口周蟒文件中的範例

函式 https://code.google.com/p/zhpy/wiki/ZhpyFunctions

簡單的自訂函式範例


非常完美。

函式參數呼叫範例



2012/8/19) 更新後已支援傳入參數。


局部變量範例

目前不支援局部變量,變量全為全局變量。


模組 https://code.google.com/p/zhpy/wiki/ZhpyModules

目前不支援 import 模組。


資料結構 https://code.google.com/p/zhpy/wiki/DataStructure

購物清單範例



沒有列表排序(sort)積木、刪除列表項目積木。


為了生成各種語言程式,Blockly目前並未支援各語言特有的一些型別(type)與操作。也不支援較高階組織程式的方式。當然這些都可以自行訂製。目前看起來Blockly程式積木塊的定義方式很清晰,經過實際驗證,訂製成中文版也完全可行。

看來周蟒積木版有持續發展的可能。

六月 18, 2012

周蟒--中文Python程式語言部落
zhpy
is about »
» Blockly Maze迷宮中文版


中文化一下maze迷宮。透過程式積木來控制Google地圖小人在迷宮地圖上行走。

http://www.gasolin.idv.tw/public/blockly/demos/mazetw/index.html

附上最直觀的解法。

» 周蟒積木版的一些更新

周蟒積木版是基於Blockly製作的中文視覺化編程版本,目前已開發的新功能如下:



離線使用

現在周蟒積木版已支援離線使用,只要連到

http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html

並將這網址設成書籤,這樣一來下次離線時也能使用。



儲存/載入積木 (已整合回Blockly)

可參考加入'輸入'積木,允許匯入其他人製作的程式。




保存最後編輯狀態 (已整合回Blockly)

之前在離開瀏覽器畫面、重新載入、或是按「上一頁」鍵後,目前編輯的積木會消失。
現已透過localStorage儲存最後編輯狀態,在下次開啟時即自動讀入。

並新增「清除」按鈕,按下按鈕後可清除畫面上的積木。


提供輸入積木 (已整合回Blockly)

可參考加入'輸入'積木,允許製作文字互動遊戲(如猜數字)。


對照範例

依照「咬一口周蟒」裡的範例,用積木版重新做了一遍,可對照「咬一口周蟒」來學習。


語系無關的獨立XML

現在Blockly新版能產生與不同語系無關的獨立XML,周蟒積木版也已更新到最新的svn版本。


另一個好消息是我已經取得 Blockly 的 committer 權限,會和 Blockly 的開發者合作地更緊密,這些功能也將儘快回饋給 Blockly。

Maze迷宮中文版


可參考 Blockly Maze迷宮中文版

http://www.gasolin.idv.tw/public/blockly/demos/mazetw/index.html


六月 12, 2012

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


周蟒積木版 集各種不實用編程(中文編程+視覺化編程)於一身 XD
透過拖拉積木的方式編程,結果可輸出為Python, Javascript等語言,並可在網頁上執行即時查看結果。


http://www.gasolin.idv.tw/public/blockly/demos/codetw/index.html

這個版本是基於google blockly製作的, 

http://code.google.com/p/google-blockly/

為了支援中文編程,我協助 blockly 的 developer : 
* 將messaging抽出,方便i18n化
* 支援non ASCII變量名
* 加入在網頁上直接執行(透過javascript)功能

這些改進都已經commit進Blockly svn裡了。

周蟒積木版跟周蟒的關係主要體現在
* 目標都是中文編程
* 盡量使用和周蟒一致的變量名
* 一樣可輸出Python

有興趣的朋友可以試玩看看


與周蟒相比,周蟒積木版免去了打程式碼的功夫、
能透過web使用,並提供更多種語言輸出(javascript,python)
也許會對教小朋友學編程更有幫助?

六月 9, 2012

周蟒--中文Python程式語言部落
zhpy
is about »
» 加入'輸入'積木


周蟒積木版在「字串」分類中加上「輸入」積木,現在可以做文字互動遊戲啦。

但因為目前generator的限制, 現在只能用變量來接兩個語句,不能嵌套著用。



畫面右側也多加入了儲存/載入按鈕,但目前只有在Chrome瀏覽器上測試過。

» 可讀性

Programs are meant to be read by humans and only incidentally for computers to execute
- Don Knuth

六月 25, 2011

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

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

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


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

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

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


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

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

在使用時,只要呼叫

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

就可以得到結果。

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

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

使用時呼叫

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

也可以得到相同結果。

十二月 9, 2009

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

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

easy_install -U zhpy

命令來更新。


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

十二月 7, 2009

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

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

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

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

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

八月 16, 2009

周蟒--中文Python程式語言部落
zhpy
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
is about »
» 用周蟒建立銀行帳戶類別

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

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

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

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

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

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

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

輸出結果為:

1950
50

(例子取自 美麗程式)

八月 10, 2009

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

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

easy_install -U zhpy
命令來更新。

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

五月 9, 2009

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

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

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

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

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

十二月 15, 2008

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

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

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

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


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

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


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

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


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

十一月 12, 2008

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

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

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

簡短的範例如:


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

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


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


再輸入

$ nosetests
.
-------
OK


即完成自動測試。

九月 11, 2008

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

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

easy_install -U zhpy
命令來更新。

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

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

八月 23, 2008

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

新手在程式莊園外徘徊。

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

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


新手在程式殿堂外徘徊。

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

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

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

已經擠滿了外國人。

biggo.com.tw

A Django site.