學習Python最好的途徑

Python是當下國內最為火爆的編程語言,沒有之一!

Python 的概念

“人生苦短,我用Python”。這句戲言真實反映了Python語言的江湖地位。那么,要快速上手和進階Python編程,有什么好途徑呢?我推薦游戲開發。

學習熱情

中做的嘗試。開設的課程叫作“大學計算機基礎B”,一共16周,64學時。前面第11周講授計算機基礎和Python編程,后面5周學生學習C/C++(因后續課程需要)。后5周的大作業就是基于Win32 API開發俄羅斯方塊游戲程序。我多少有些擔心學生是否做得下來,然而到驗收的那一天,我有些吃驚。大部分同學的作品都明顯超出了作業要求的標準。

盡管有很多因素(比如強有力的教輔)促成了這樣的好結果,但我認識到一個重要的原因是“激發了學生們的學習熱情”。是的,游戲開發有這個效果。有學生告訴我,他把自己的作品發布到高中同學群,讓同學們玩玩,結果贏得贊譽一片。我察覺到了學生嘴角露出了小小的得意。有學生開夜車編程序,搞到凌晨兩三點都不想去睡覺。所以呢,我百分百肯定,游戲開發是學習Python編程的好途徑。

游戲開發門檻低

用Python開發游戲的門檻是很低的。例如,實現顯示游戲窗口(見圖1)的代碼,不包括空行和注釋行的話,只需要15行。如果你想親自驗證一下,那么請閱讀我發布的代碼文件,然后數一數其中有實際功能的代碼行數。我以前用VC++開發圖形界面程序的時候,實現顯示游戲窗口的代碼有一大堆,跨好幾個文件,讓人望而生畏。用Python的話,基于Pygame模塊,15行代碼就搞定了。

游戲窗口

無論是Python入門,還是Python進階,學習者都有適合的游戲開發項目可供選擇。正是這樣,Python語言成為教孩子學編程的優先選擇。教小孩學編程,可不能一本正經的,必須用好招吸引他們,激發他們。游戲開發就是常用的招術。以《教孩子學編程(Python語言版)》一書為例,該書一開頭就教孩子繪制彩色螺旋線,接著教孩子編寫小游戲,然后教孩子編寫具有動畫、鼠標控制的游戲。我建議初學者可以自降身份去學一學這本書。如果你想編寫有更多挑戰的游戲,那么建議你學習《Python游戲編程快速上手》一書或者《Python游戲編程入門》一書。

還想要更高一點的挑戰?建議你嘗試跟著我學習“用Python開發俄羅斯方塊”。你可以訪問我在GitChat開設的達人課。該教程面向的是已有Python編程基礎的、想進一步提高Python編程能力的開發者。教程設計采用“小步走”策略,一共有22篇文章。每一篇都是一個完整的實驗步驟,實現一個功能。在每一篇文章中,首先指出實驗步驟的目標,也就是指出完成整個步驟后,程序運行效果是什么樣的。接著,描述實驗步驟的實現思路和任務。然后,逐個任務地講解具體的做法,也即指出哪里要修改/補充什么代碼,改寫后的代碼是什么樣的,為什么要這樣做。最后,給出該實驗步驟完成后的源代碼版本的Github鏈接,供瀏覽或下載。到最后,我們將實現能供家人、朋友或同學實際玩一玩的俄羅斯方塊游戲。圖2是運行界面的截屏。我上傳的視頻呈現了該程序的運行效果。

俄羅斯方塊

有沒有開源的游戲程序呢?有的,知乎上的一篇文章推薦了不少開源項目。其中推薦的 BombSquad是一個 3D 炸彈人游戲,界面(見圖3)還是挺酷炫的。

炸彈人游戲

從游戲開發中能學到什么

開發者有機會接觸到千行代碼量級的程序。初級開發者編寫的程序一般只有幾十行代碼。要指出的是,編寫幾十行代碼的程序和編寫千行代碼的程序,完全不是一個量級的事。至少,千行代碼這一現實將促使開發者養成使用函數的習慣。我上編程基礎課的時候,由于編寫的程序只有幾十行代碼,學生不愿意用函數,你再苦口婆心地講道理也沒用。

游戲開發要求開發者采用良好的結構來組織代碼。程序的代碼量上去了,會促使開發者使用多個模塊文件,甚至使用類與對象來編程。

從游戲開發中,開發者將學習圖形界面開發(GUI),理解事件驅動編程模型。這將會幫助開發者消除對軟件的神秘感,有助于開發者開展更多的探索。

游戲開發會提高開發者的學習能力。例如,游戲開發會用到python標準庫以及各種第三方庫。這將促使開發者借助網絡和手冊,查詢各個函數的用法,學習相關的概念和知識。一點一點地,開發者擁有更多知識,更強的學習能力。

游戲開發實踐注意事項

切勿囫圇吞棗。不要這樣做:照著書本或者教程敲(甚至復制)一遍代碼,跑一遍程序就算完事了。你必須自己搞懂。無論是整體思路,還是一行代碼內的細節,你都要吃透。怎樣算吃透了程序?不借助書本或教程(借助手冊查閱函數的用法是可以的),能正確地再寫一遍程序。

采用“小步走”策略。下一步只實現一個小功能。實現完成后,檢查運行效果。通過后再去完成下一個功能。

多用函數,多用函數,多用函數。把程序代碼分解到多個模塊文件。使用類和對象來組織代碼。

尋求幫助。我遇到問題的時候,首先做的是厘清問題是什么。接著,我會在網絡引擎的搜索框內輸入描述問題的關鍵詞,期望得到解決辦法的線索。這幫了我的大忙。最后,我偶爾會到論壇上提問。CSDN論壇就是一個好選擇。

最重要的是,動手干!

?------------------------------------------------

原文地址:https://zhuanlan.zhihu.com/p/63202625

轉載請標明來之:阿貓學編程
更多教程:阿貓學編程-python基礎教程

所有評論

如果對文章有異議,請加qq:1752338621