安卓運行Python的神器:QPython
很多熱愛編程的學友經常會問這樣的問題:如何才能學好Python?我的回答是:你的熱情+經常練習。
也許你會說我沒有時間啊?今天我們介紹的就是一個利用碎片化時間學習Python的利器:QPython。
這是一款能夠在安卓手機上運行Python的軟體,你可以在地鐵上、公交車上甚至在無聊的會議上隨時隨地練習Python。
閑話少說,正式開始我們的內容吧!
版本介紹
QPython是一種通用叫法,其實它分為兩款,分別是QPython、QPython3分別對應支持Python2和Python3。
目前QPython3的正式版本:1.0.3,支持到Python3.2.2。測試版本:1.2.0-BETA-3,這個版本具有較大的改進,Python也支持到3.6.1,增加了QPYPI(為Python3添加第三方庫的QPython3工具),詳情:qpython-android/qpython3
Qpython的正式版本:2.0.5(目前我在軟體市場上沒有找到這個版本),支持到Python2.7.12,詳情:qpython-android/qpython
目前從各大軟體市場上下載的QPython3的版本是:1.0.3,QPython的版本是:1.4.1。而且從實際使用上,QPython的體驗比QPython3要好一些,至少從軟體市場上下載QPython能夠支持到Python2.7.12,而QPython3隻能支持到Python3.2.2,當然作為練習也足夠了。
本次的介紹是以QPython2.0.5為例(QPython3請參考),分為使用界面、安裝第三方庫、以及小例子。
使用界面
當我們安裝完畢QPython後,我們進入軟體看到是這個界面:
從這個界面上我們可以清晰的看到QPython可以實現的功能,其中主要功能包含:終端、程序編輯器、文件(從文件中讀取程序)、二維碼(這個絕對是神器)、QPYPI(安裝第三方庫)、社區、課程。
我們一一來看下。
終端
從圖中我們可以看到這個Python運行的命令行界面是不是和我們在電腦上使用的很像啊,從圖中我們可以看到它的Python版本是2.7.12,足夠我們學習使用了啊。
同時在「+」這個位置,我們可以增加多個命令行窗口,感覺是不是很爽啊!
程序編輯器
在程序編輯器中我們寫了一個簡單的程序,列印出「Hello xdbcb8」。
下面我按照數字標記分別介紹一下對應的功能。
這裡在提醒一下:當保存時,不要忘記增加.py,編輯器可不會幫你自動添加的。
最後我們來運行一下這個小程序。
文件
在這裡我們可以選擇需要運行的程序或者打開相應的項目。
二維碼
為什麼這是一個神器呢?我們知道在手機編輯腳本畢竟沒有在電腦上方便,但是有了這個我們可以把自己的腳本製作成二維碼(在線製作二維碼的工具太多,這裡不做介紹,請自行百度)。
一個二維碼可以存儲多少信息呢?
據百度百科介紹:二維碼可容納多達1850個大寫字母或2710個數字或1108個位元組,或500多個漢字。這對於普通的練習程序足夠用了。
我們演示一下,代碼就是每周一練中的《羅馬數字轉阿拉伯數字》
首先我們將代碼轉換成二維碼,如下圖:
接著我們點擊QPython中的二維碼按鈕,掃描一下
然後我們保存一下程序
最後運行一下,如下圖:
完整的操作過程如下:
QPython羅馬數字轉阿拉伯數字_騰訊視頻 https://v.qq.com/x/cover/x055907cijk/x055907cijk.htmlQPYPI
QPython提供了一個QPypi服務,發布了幾個庫,你可以下載安裝。當然你也可以通過pip方式安裝第三方庫。標記的地方可以使用手動安裝第三方庫。具體的操作我們將在安裝第三方庫那裡講解。
社區、課程
顧名思義就是提供討論區、課程的地方了,這裡不做講解,有興趣的話,大家可以看看。
安裝第三方庫
Python之所以強大,除了它語句便捷好用外,其第三方庫眾多是非常大的一個原因。QPython可以通過三種方式安裝並使用第三方庫。但是需要注意的是:如果你安裝的庫中有c/++文件需要編譯,則會因為找不到編譯鏈工具而失敗
- 手動安裝庫
可以將庫複製到設備中的/sdcard/qpython/lib/python2.7/site-packages中。
2. 從QPypi安裝
從QPypi安裝一些預構建的庫,如numpy、tornado等。具體操作如下:
QPython PYPI安裝_騰訊視頻 https://v.qq.com/x/cover/m0559ni8aau/m0559ni8aau.html3.從Pypi安裝
點擊之後,您進入了pypi命令界面,它調用了pypi工具來讓您自行安裝,只需要輸入pip命令,比如pipinstall[HTML_REMOVED]之類的語句即可安裝庫,不過需要注意地是,當前無法安裝帶有c/c++等需要編輯的文件的庫,因為安卓默認沒有可用於編譯的工具鏈。
下面我以安裝requests庫為例操作一下:
QPython pip安裝_騰訊視頻 https://v.qq.com/x/cover/z0559o6zn5b/z0559o6zn5b.html小例子
下面的小例子均來源互聯網,僅作為示例介紹。
這是一個關於歡迎的例子
import androidhelperdroid = androidhelper.Android()respond = droid.dialogGetInput("Hello", "What is your name?")print respondname = respond.resultif name: message = "Hello, %s!" % nameelse: message = "Hey! And you"re not very polite, %Username%!"droid.makeToast(message)
先看看執行效果
QPython Hello world_騰訊視頻 https://v.qq.com/x/cover/g0559qvn7u6/g0559qvn7u6.html這個程序的目的比較簡單,就是彈出一個對話框,然後輸入姓名,根據輸入的姓名是否為空,給出相應的信息。我們具體解析一下。
import androidhelper
這句話很重要啊,SL4A 是支持驅動安卓特性工作的腳本庫。
在QPython中它以importandroidhelper開始,是QPython里最有用的模塊之一,它用Python的形式封裝了幾乎所有的安卓介面(是不是說可以用Python寫點安卓程序?_?)。在QPython里開發的任何腳本,如果想要調用安卓的SL4A介面,都需要以這則聲明開始(至少它可以和用戶通信)。
順便提一下,如果你要讓你的腳本兼容其他SL4A庫,你最好用下列代碼替換迪一行(並且在程序里進一步使用android替代androidhelper):
try: import androidhelper as androidexcept ImportError: import androiddroid = androidhelper.Android()
我們要創建一個droid對象(實際上是一個類),調用RPC函數來與安卓系統通信是很有必要的。同時,我們代碼的最後一樣會調用類似的方法droid.makeToast(),它將會在屏幕上顯示一個彈出消息。好了,接下來,我們會添加更多的功能。讓它向用戶詢問用戶的名字並且問候他們。
respond = droid.dialogGetInput("Hello", "What is your name?")print respondname = respond.result
我們使用dialogGetInput調用來顯示一個對話框盒子,帶標題,提示,編輯區域、CANCEL和OK按鈕。然後我們看看droid.dialogGetInput()返回什麼東東。實際是返回了一個帶有3個項目的JSON對象。我們只需要一個result,它包含了來自用戶實際的輸入。如下圖:
if name: message = "Hello, %s!" % nameelse: message = "Hey! And you"re not very polite, %Username%!"
這裡就是一個Python的格式化輸出,如果name不為空,message被賦予不同的值。
droid.makeToast(message)
在屏幕上彈出message信息。
這是一個關於調用手機攝像頭掃描圖書的例子
import androidhelper droid = androidhelper.Android() code = droid.scanBarcode() isbn = code[1]["extras"]["SCAN_RESULT"] url = "http://book.douban.com/subject_search?search_text=%s&cat=1001"%isbndroid.startActivity("android.intent.action.VIEW",url)
先看看執行效果
QPython圖書掃描_騰訊視頻 https://v.qq.com/x/cover/x0559gye2cm/x0559gye2cm.html這段代碼就是利用豆瓣讀書可以根據ISBN查詢圖書的原理進行圖書信息的查詢。
code = droid.scanBarcode() isbn = code[1]["extras"]["SCAN_RESULT"]
啟動條碼掃描器,返回掃描到的信息:
/qpython/scanner.py" && exitResult(id=1, result={u"action": u"com.google.zxing.client.android.SCAN", u"extras": {u"SCAN_RESULT": u"9787546354835", u"SCAN_RESULT_FORMAT": u"EAN_13"}, u"flags": 524288, u"categories": None}, error=None)
然後我們取得ISBN碼:9787546354835
url = "http://book.douban.com/subject_search?search_text=%s&cat=1001"%isbn
豆瓣讀書在讀取到我們的ISBN碼後通過以下鏈接展示結果:
https://book.douban.com/subject_search?search_text=9787546354835&cat=1001,
如下圖:
droid.startActivity("android.intent.action.VIEW",url)
開始動作,這裡是通過系統默認瀏覽器打開相應的鏈接。
更多的androidhelper APIs,可以參見:AndroidFacade - QPython 0.9 documentation
最後
今天的QPython我們就介紹到這裡,實際上它的功能還不僅僅如此,甚至能運行WebApp,大家可以試試。如果你還要了解更多關於QPython的知識,歡迎留言給我。人氣旺的的話我還會再寫的。
更新的QPython軟體如果在軟體市場上下載不到,github上下載慢的話,可以關注微信公眾號:發送qpython,得到百度雲盤下載鏈接。
推薦閱讀:
※Python中你可能不知道的platform
※Kaggle HousePrice : LB 0.11666(前15%), 用搭積木的方式(2.實踐-特徵工程部分)
※八大排序演算法python實現合輯
※[Python + SQL] NBA史上最弱的球隊是哪一個
※簡單三步,用 Python 發郵件