從Scratch到Python——4句話生成二維碼
```
# Python利用pyqrcode模塊生成二維碼
import pyqrcode
import sys
number = pyqrcode.create(從Scratch到Python——Python生成二維碼,encoding=utf8)
number.png(d:\a.png,50)
```
![上述代碼生成的二維碼](http://upload-images.jianshu.io/upload_images/1108512-62e811e2cdcd6bbc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![微信掃描結果
](http://upload-images.jianshu.io/upload_images/1108512-bccd503ddbcbcf83.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
>我相信,將來Python一定會走進中小學生的教材,像Scratch一樣成為編程入門語言;至於人手一把遊標卡尺,我覺得是無腦黑,畢竟學漢字還要用個四線方格呢,設計這個針對Python的練習本可比作文本容易多了.
**我強烈的相信Python一定會走進中小學的教材,為此我一直在努力.**
## Python有什麼好?
試圖向沒有接觸Python的人解釋Python的好處是比較困難的,對於Python Turtle來說,跟Logo語言辣么相似,學logo就好了,幹嘛學習Python呢?
我竟然無言以對,畢竟Python的種種強大對小學生來說是感知不到的.
今天看自己安裝的Python模塊的文檔,無意中發現了竟然安裝了```pyqrcode```模塊,跟二維碼相關的嘛,於是嘗試了一下,拋開兩行導入,只要兩行就可以生成一個二維碼真的超簡單的.
```
# Python利用pyqrcode模塊生成二維碼
import pyqrcode
import sys
number = pyqrcode.create(從Scratch到Python——Python生成二維碼,encoding=utf8)
number.png(d:\a.png,50)
```
實際上這段代碼是很簡單的,但是呢可以跟Python turtle很好的結合起來.
**logo語言在國外編程教育歷史中曾經扮演過很重要的角色**,然而其歷史地位已經被Scratch所取代,採用兼容Logo語言的Python turtle絕不是為了開倒車,利用Python turtle掌握編程基本概念之後,可以利用Python的簡潔強大開發出屬於自己的小工具.
Scratch雖然很強大,scratch利用自帶的繪圖功能也並非不能繪製二維碼,只是對於小孩子來說難以理解,而Python因為有著**豐富的代碼庫**,所以只需要引入對應的庫,然後調用相關的指令就好了.
我們知道Scratch中有詢問命令,同時可以獲取到詢問的回答,在Python turtle中也有類似的功能.
那麼我們就可以用Python turtle構建一個可以生成包含指定文字的二維碼.
如今,**二維碼在日常生活中隨處可見**,能夠自己生成二維碼真是件讓人開心的事情呢.
這兩天一直在分析Python turtle的源代碼,也增加了許多功能,當然因為```Tkinter```的限制,獲取滑鼠的坐標需要很多複雜的工作;有人說Python turtle能做的Pygame,pyglet,pyqt都能做,為什麼非得用Python turtle呢,因為這是最簡單用文本編程構建圖形化界面的工具,門檻很低,沒有的功能二次開發加上就是了.
但是這種能夠跟互動式命令行完美兼容的特點,是pygame也好,pyglet也好,pyqt也好,所不具備的,而這就是scratch成功的```低門檻```的特性,雖然Python已經足夠簡單易學,但是對於小孩子來說,盡量降低學習成本是有必要的,盡量符合孩子的認知特點.
同樣scratch還具有個性化多樣性的特點,允許使用自己的圖像,照片,繪製的圖畫,這對Python來說完全不是問題,況且Python有各領域豐富的代碼庫,來完成各種稀奇古怪的任務.
至於scratch的**無極限**,據說有人用scratch來做光線追蹤程序,這不是不可以的,這個特點強調隨著對scratch掌握程度的加深可以開發出複雜的作品,但是scratch本身的性能是有限制的,這點在官方的paper中也有所體現;而Python完全不存在這個問題,只有你想不到,Python能夠完成的任務超乎你的想像.
以上是我堅定不移的推崇Python的原因中的一些,歡迎大家留言,探討.
對了,之前有老師留言問,Python能否跟arduino交互,可以的.跟scratch類似,寫入一個固件,然後Python就可以跟arduino互動的,但是不能編譯,這點比較遺憾;其實硬要編譯也是可以的,不過需要把Python轉換成c語言的代碼,然後調用相關的命令上傳程序到arduino,也有人在做這方面的工作,初期的話,我們使用Python+固件的方式交互比較好一些.後面會介紹
推薦閱讀:
※從Scratch到Python的新玩兒法-KittenBlock&Python
※Scratch 2.0 編輯器切換到簡體中文版的方法
※沐風老師詳解Scratch 2.0中文幫助:製作音樂
※沐風老師詳解Scratch 2.0中文幫助:讓它飛吧!