劉光然
摘要:python的重要性已經(jīng)眾所周知,在初學(xué)python時(shí),如何能夠快速入門,同時(shí)保持進(jìn)一步的學(xué)習(xí)動(dòng)力,這是擺在大部分初學(xué)者的面前的一個(gè)難點(diǎn)。一般的教材也好,參考書也好,為了追求系統(tǒng)、全面,在某種程度上知識點(diǎn)過多,初學(xué)者不知道用在何處,造成了學(xué)習(xí)的難度,打擊了初學(xué)者的信心。本文提出一種簡易的快速入門方法,簡單的學(xué)習(xí)python的基礎(chǔ)知識后,開始使用leetcode進(jìn)行算法刷題,然后循序漸進(jìn)進(jìn)一步學(xué)習(xí)。
關(guān)鍵詞:Python;入門;leetcode
引言
最近看到幾則新聞:
1、Python將納入浙江省高考!從 2018 年起浙江省信息技術(shù)教材編程語言將會更換為 Python。
2、Python納入山東省的小學(xué)教材課程,小學(xué)生都開始接觸 Python 語言了。
3、Python 將加入全國計(jì)算機(jī)等級考試!教育部考試中心決定自2018年起,在計(jì)算機(jī)二級考試加入了"Python語言程序設(shè)計(jì)”科目。
4、現(xiàn)在國外國內(nèi)很多家長已經(jīng)給孩子報(bào)名學(xué)習(xí)Python編程課程了。在美國,就連嬰幼兒也有專門的編程童書。
5.全國大學(xué)生藍(lán)橋杯軟件大賽在2019年加入了python。
隨著人工智能和機(jī)器學(xué)習(xí)的發(fā)展,各行各業(yè)職位正在逐漸被智能機(jī)器取替,為了應(yīng)對被取替的風(fēng)險(xiǎn),越來越多人開始學(xué)習(xí)編程,最近一年,似乎要進(jìn)入全民Python編程的時(shí)代了。那么怎么學(xué)習(xí)python,市面上的python書要么是兒童入門學(xué)習(xí)python,或者是正式版本的python學(xué)習(xí)書籍和教材。那怎么學(xué)習(xí)才能快速入門呢?本文提出了一種新的策略,就是學(xué)習(xí)基本的python基礎(chǔ)知識后,配合力扣網(wǎng)站進(jìn)行python算法刷題。這種方式的最大好處是,可以在python的學(xué)習(xí)過程中結(jié)合算法題的具體應(yīng)用,通過刷算法題來促進(jìn)進(jìn)一步學(xué)習(xí)python。
一、Python知識點(diǎn)學(xué)習(xí)
Python是一門高級的面向?qū)ο蟮膭?dòng)態(tài)語言,任何一本python書籍,都會介紹詳細(xì)介紹python的方方面面,這些語法和規(guī)則往往都是比較完全和全面,對于計(jì)算機(jī)專業(yè)的學(xué)生可能還好一些,對于外專業(yè)的學(xué)生就不那么友好了。雖然說金融會計(jì)等其它外專業(yè)也需要使用python做一些數(shù)據(jù)處理方面的工作,但是降低python入門的難度,減緩python入門學(xué)習(xí)的難度曲線,這是比較重要的。即使對于計(jì)算機(jī)的學(xué)生,如果入門輕松一些,讓更多人能夠進(jìn)一步去領(lǐng)略學(xué)習(xí)的樂趣,也是好事一件。
簡單的說,python的知識點(diǎn)分為兩塊,一塊是編程語言的基本數(shù)據(jù)類型和流程結(jié)構(gòu),另外一塊就是面向?qū)ο蠛鸵恍└呒壴掝}。本文提出的方法就是,python入門知識點(diǎn)只講第一塊,也就是python中簡單的數(shù)據(jù)類型、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)、函數(shù)。為什么這樣也能算是合理呢,請看下節(jié)進(jìn)一步對算法刷題進(jìn)行講解。
二、力扣刷算法題
計(jì)算機(jī)專業(yè),最重要的基礎(chǔ)課程,可能要算《數(shù)據(jù)結(jié)構(gòu)和算法》。對于這一點(diǎn)估計(jì)沒有人有疑問。說到刷數(shù)據(jù)結(jié)構(gòu)和算法題,那么就不能不提到大名鼎鼎的力扣網(wǎng)站。力扣網(wǎng)站的題型分為容易,中等和難三個(gè)等級,編程的語言可以選擇多種,常用的是c++,Java,pythhon等。對于容易的算法題,上一節(jié)講的基礎(chǔ)知識就可以刷題了。這里舉一個(gè)例子:
1、兩數(shù)之和:
給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)整數(shù)目標(biāo)值 target,請你在該數(shù)組中找出 和為目標(biāo)值 target ?的那 兩個(gè) 整數(shù),并返回它們的數(shù)組下標(biāo)。你可以假設(shè)每種輸入只會對應(yīng)一個(gè)答案。但是,數(shù)組中同一個(gè)元素在答案里不能重復(fù)出現(xiàn)。你可以按任意順序返回答案。
示例 1):
輸入:nums = [2,7,11,15], target = 9
輸出:[0,1]
解釋:因?yàn)?nums[0]+ nums[1]== 9 ,返回 [0, 1]。
答案是:
class Solution:
def twoSum(self, nums, target):
dic = {}
for i, num in enumerate(nums):
if target - num in dic:
return [dic[target - num], i]
dic[num]= i
這里的知識點(diǎn)就是第一部分的最基礎(chǔ)的python知識點(diǎn),不過唯一需要補(bǔ)充的知識點(diǎn)有兩個(gè):
A)類(class)的概念;
B)力扣的答案是無法直接在python環(huán)境下運(yùn)行的。假如要運(yùn)行,必須增加輸入。如下所示:
nums = [2,7,11,15]
target = 9
x = Solution()
Result = X.twoSum(nums, target)
print(result)
補(bǔ)充了這兩個(gè)知識點(diǎn)后,那么就可以理解力扣上的算法題的答案了。這樣的話,就可以在python的入門過程中,直觀的看見python的代碼時(shí)如何解決一些小型的“實(shí)際”問題。
至于兩者之間的相互促進(jìn),在下一節(jié)進(jìn)一步闡述。
三、知識點(diǎn)學(xué)習(xí)和刷算法題的結(jié)合
學(xué)習(xí)了python的基礎(chǔ)知識點(diǎn)后,開始刷一些力扣上簡單的算法題,可以了解python語言中基本數(shù)據(jù)類型和流程結(jié)構(gòu),可以解決什么具體的問題。如果剛剛學(xué)習(xí),完全不會做算法題目,也沒有關(guān)系,力扣上面會有python的解法提供,直接參考別人的優(yōu)秀代碼,同樣可以達(dá)到上述目的。這樣一來,書本上的知識點(diǎn)就不是空洞的,而是非常生動(dòng)形象。這里的難點(diǎn),可能就是要尋找對應(yīng)的算法題,如果有人指導(dǎo)提供對應(yīng)的算法題(和書本知識點(diǎn)比較匹配的),那么學(xué)習(xí)起來就事半功倍。
小結(jié)
本文對于python初學(xué)者,提出了一種快速入門的方法,在外專業(yè)學(xué)生的《python基礎(chǔ)程序設(shè)計(jì)》課堂上經(jīng)過驗(yàn)證,取得了不錯(cuò)的效果,希望對于廣大的python初學(xué)者有一定的幫助。
參考文獻(xiàn):
[1]https://leetcode-cn.com/
[2]黑馬程序員。Python快速編程入門.北京:人民郵電出版社,2021.
[3]胡松濤。 圖解LeetCode初級算法(Python版).北京:清華大學(xué)出版社,2020.