安卓運行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.html

QPYPI

QPython提供了一個QPypi服務,發布了幾個庫,你可以下載安裝。當然你也可以通過pip方式安裝第三方庫。標記的地方可以使用手動安裝第三方庫。具體的操作我們將在安裝第三方庫那裡講解。

社區、課程

顧名思義就是提供討論區、課程的地方了,這裡不做講解,有興趣的話,大家可以看看。

安裝第三方庫

Python之所以強大,除了它語句便捷好用外,其第三方庫眾多是非常大的一個原因。QPython可以通過三種方式安裝並使用第三方庫。但是需要注意的是:如果你安裝的庫中有c/++文件需要編譯,則會因為找不到編譯鏈工具而失敗

  1. 手動安裝庫

可以將庫複製到設備中的/sdcard/qpython/lib/python2.7/site-packages中。

2. 從QPypi安裝

從QPypi安裝一些預構建的庫,如numpy、tornado等。具體操作如下:

QPython PYPI安裝_騰訊視頻 https://v.qq.com/x/cover/m0559ni8aau/m0559ni8aau.html

3.從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 發郵件

TAG:Python | Python教程 | Python入门 |