邊教邊學(xué)之蟒就行了:序

初衷

筆者本身也不過是一個(gè)處于入門階段的Python初學(xué)者照藻,竟想要寫一份“Python入門教程”快耿,再加上現(xiàn)在網(wǎng)上的Python入門教程實(shí)如過江之鯽盏袄,其中大牛之作不在少數(shù),各類網(wǎng)課葱她、在線教學(xué)更是層出不窮撩扒,似乎是有些不自量力了。不過最終還是鼓起勇氣決定寫寫試試吨些,畢竟我也不是全無優(yōu)勢(shì)搓谆。剛剛邁過入門之坎的我,大概最能理解編程小白們?nèi)腴T時(shí)的茫然與困惑豪墅,而這也是一些大牛們的盲點(diǎn)所在泉手,而且我剛剛當(dāng)完兩門編程課助教,正有些“一線教學(xué)體會(huì)”呢偶器。因此也就寫寫斩萌,一方面幫助師弟師妹們學(xué)習(xí)缝裤,另一方面則是我更大的私心:通過教別人,幫助自己更好的學(xué)習(xí)颊郎。哈哈憋飞,這大概是少數(shù)“邊學(xué)邊教”的“教程”了吧!使零基礎(chǔ)初學(xué)讀者迅速追上我的水平姆吭,并同我一起學(xué)習(xí)進(jìn)步榛做,就是本教程的最終目標(biāo)了。

目標(biāo)讀者

本教程旨在讓初學(xué)者對(duì)編程有所了解内狸,并能夠用Python來解決日常生活中的一些問題检眯,提高效率和找點(diǎn)樂子。在此之余答倡,鑒于筆者的科研工作者背景轰传,會(huì)順帶著講些數(shù)據(jù)處理的東西,乃至隨著我的興趣變化瘪撇,學(xué)習(xí)一些新的東西說來分享获茬。所以指望學(xué)Python來升職加薪,乃至有什么專業(yè)訴求的讀者倔既,還是去看大牛們的教程恕曲,更加專業(yè)。(比如廖雪峰-Python教程

另外如果你早有其他語言的編程功底渤涌,那也別看在我這浪費(fèi)時(shí)間了佩谣,面向小白的教程難免啰嗦。

關(guān)于本教程的一些說明

上文已經(jīng)提到实蓬,筆者其實(shí)也只不過堪堪入門茸俭,如題所言,邊教邊學(xué)安皱,所以顯然并無能力獨(dú)立完成一份教程的框架構(gòu)建调鬓。本教程的主要框架和內(nèi)容取自Al Sweigart的Automate the Boring Stuff with Python一書,此外會(huì)結(jié)合本人在自學(xué)過程中用到的其他材料和經(jīng)驗(yàn)做些修改酌伊。這本書是我看過的對(duì)初學(xué)者最友好的入門教程腾窝,文字內(nèi)容也很有意思(原版),我在做Python課助教時(shí)也一直向同學(xué)推薦來著居砖。有中文版虹脯,覺得看書方便的同學(xué)可以買本支持一下。不過我推薦原版奏候,中文版的翻譯在少數(shù)地方還是略有差錯(cuò)循集,無傷大雅,但總歸是差了一籌鼻由,英文版的詞匯也很簡單暇榴,不難看懂厚棵。原版在這里Automate the Boring Stuff with Python,Al Sweigart先生慷慨的將本書的電子版以創(chuàng)作共用許可發(fā)布在了網(wǎng)上蔼紧,使我們可以免費(fèi)的閱讀婆硬、分享甚至編輯、修改后再發(fā)布奸例。本教程也采用相同的許可彬犯。

PS : 按照原版的許可,是可以對(duì)其修改查吊、轉(zhuǎn)換后再發(fā)布的谐区,但這本書又有中文版在國內(nèi)賣,我不確定二者有無沖突逻卖,如有侵權(quán)請(qǐng)與我聯(lián)系宋列。

啥是編程

往前推個(gè)十幾年,編程這事對(duì)很多人來說好像還帶著點(diǎn)神秘色彩评也,好像是一件牛逼的不得了的事炼杖,近幾年隨著Python等高級(jí)語言的流行,編程早已不再那么高深莫測(cè)盗迟,但影視作品中動(dòng)不動(dòng)刷刷刷一屏0和1坤邪,還是能把小白唬的一愣一愣的(更嚇人的是主角們能從這一堆的0和1中直接看出信息來)。其實(shí)編程沒那么復(fù)雜罚缕,本質(zhì)就是給計(jì)算機(jī)下達(dá)指令艇纺,讓它們干這個(gè)干那個(gè)。常用的幾句話邮弹,翻譯成中文就是:

  • “把這個(gè)干了黔衡,再把那個(gè)也干了‰缦纾”
  • “如果這個(gè)這樣员帮,你就這樣做,否則导饲,那樣做÷炔模”
  • “那這件事給我干多少多少次渣锦。”
  • “一直干這個(gè)氢哮,直到那個(gè)什么什么完成袋毙。”
    嗯冗尤,寫完這段听盖,突然發(fā)現(xiàn)我媽就是個(gè)偉大的程序員胀溺。

再看段更實(shí)際些的Python代碼:

passwordFile = open('SecretPasswordFile.txt')# 打開密碼文件
secretPassword = passwordFile.read()# 從密碼文件中讀取密碼
print('Enter your password.')# 顯示“請(qǐng)輸入密碼”
typedPassword = input()# 讀取用戶輸入的密碼
if typedPassword == secretPassword:# 如果密碼一致
    print('Access granted') #顯示 “驗(yàn)證通過”
    if typedPassword == '12345':# 如果密碼是12345
        print('That password is one that an idiot puts on their luggage.')# 顯示“你si bu si sa”
else:# 否則
    print('Access denied')# 顯示“驗(yàn)證失敗”

其實(shí)如果你英文四級(jí)及格,我不注釋你也能明白這段代碼是干嘛的吧皆看?不得不說在這方面老外比我們占便宜仓坞。

啥是Python

簡單點(diǎn)說就是一套語法規(guī)則和一個(gè)編譯器,編譯器就是把符合這套語法規(guī)則的代碼轉(zhuǎn)換成計(jì)算機(jī)能明白的指令的這么一個(gè)東西腰吟,類似于你和計(jì)算機(jī)之間的翻譯无埃,每種語言都有自己的編譯器。Python這個(gè)單詞的意思是蟒蛇毛雇,但它的創(chuàng)造者取的并不是這個(gè)意思嫉称,而是他追的英劇的名字,具體參考維基灵疮,據(jù)說這門語言是為打發(fā)時(shí)間創(chuàng)造出來的orz织阅。

數(shù)學(xué)?一點(diǎn)點(diǎn)就好

Al Sweigart說編程中用到的數(shù)學(xué)就好比解數(shù)獨(dú)震捣。他還非常細(xì)致的講解了9*9數(shù)獨(dú)的解決思路荔棉,我就偷個(gè)懶,不細(xì)說了伍派〗總之需要的只是算法邏輯,對(duì)數(shù)學(xué)的要求并不高诉植。當(dāng)然如果你要解決一些實(shí)際的問題祥国,比如構(gòu)建物理模型,當(dāng)然會(huì)用到數(shù)學(xué)晾腔,但那并不能算是編程的問題舌稀。

編程,關(guān)鍵是創(chuàng)造

編程就像搭積木灼擂,先搭個(gè)架子壁查,再修修補(bǔ)補(bǔ)逐漸美化。那些條條塊塊都在你手中剔应,能搭出個(gè)什么東西睡腿,就看你自己啦【縱然中間會(huì)出錯(cuò)席怪,甚至?xí)罎ⅲ蝗允强梢詷吩谄渲械囊患聠幔?/p>

下載和安裝Python

欸嘿嘿纤控,我又來偷懶了挂捻,請(qǐng)戳:廖雪峰-安裝Python(這樣會(huì)不會(huì)本來就未必有多少的讀者也跑走了……不過沒關(guān)系,你覺得他的教程更適合你的話船万,那恭喜你找到了更適合自己教程~)

我就強(qiáng)調(diào)幾個(gè)注意事項(xiàng)并做一些補(bǔ)充:

  1. 要下載Python3刻撒,并且是最新版本的骨田,這已經(jīng)是大勢(shì)所趨,入門就別再入Python2的門了声怔;
  2. 看清自己是32位還是64位的系統(tǒng)目胡。
  • Windows: 開始→控制面板→系統(tǒng)
  • OS X:About This Mac →More Info→ System report→Hardware
  • Ubuntu Linux, 打開終端蜡娶,輸入命令 uname -m
    i686代表32位,x86_64代表64位。
  1. 補(bǔ)一下上文鏈接中沒有的ubuntu下的安裝方法:
  • 打開終端
  • 輸入 sudo apt-get install python3
  • 輸入 sudo apt-get install idle3
  • 輸入 sudo apt-get install python3-pip
    其它linux發(fā)行版葵擎,你既然選擇了它盼樟,就真的應(yīng)該知道怎么用它裝Python了

運(yùn)行IDLE

前面說過狸捕,編譯器是運(yùn)行你的代碼的軟件秉犹,而IDLE也就是interactive development environment,即交互式開發(fā)環(huán)境晚树,就是你你輸入代碼的地方了姻采。Windows下打開開始菜單,輸入IDLE爵憎;Ubuntu里打開終端慨亲,運(yùn)行idle3; Mac OS X則是在你的應(yīng)用里找IDLE宝鼓,即可打開IDLE刑棵。

Shell

打開IDLE后你看到的情況應(yīng)該類似如此:

Python 3.6.1 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:25:24) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 

這個(gè)就是interactive shell了,直譯是交互式殼愚铡,感覺怪怪的蛉签,一般我們就叫它shell,不再翻譯了沥寥。它很像Ubuntu的終端和Windows里的命令提示符碍舍,在這里你可以輸入命令讓Python去執(zhí)行,立刻就會(huì)看到結(jié)果邑雅。
試一下這句

>>> print('Hello world!')

如何尋求幫助

注意片橡!這里要畫重點(diǎn)!在我當(dāng)助教的兩門編程語言課程中淮野,部分學(xué)生在遇到問題后的表現(xiàn)實(shí)在是有些呆捧书,基本報(bào)錯(cuò)就懵逼,但平心而論骤星,Python的錯(cuò)誤提示信息確實(shí)寫的相當(dāng)明白了鳄厌。看下面這個(gè)例子:

>>> '42' + 3
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
'42' + 3
TypeError: Can't convert 'int' object to str implicitly

如果你的英語比較好(這一點(diǎn)外國人真的占便宜)妈踊,你就可以直接讀懂報(bào)錯(cuò)的含義。注意 line 1告訴的是你出錯(cuò)的位置泪漂,TypeError說的是錯(cuò)誤類型廊营,具體是無法將int(整型歪泳,也就是整數(shù),integer露筒,數(shù)據(jù)類型以后會(huì)講)轉(zhuǎn)化為str(字符串呐伞,string),也就是說字符串“42”不能和整數(shù)3直接相加慎式。

如果你英語不夠好伶氢,也沒關(guān)系,將"TypeError: Can't convert 'int' object to str implicitly"這一句瘪吏,復(fù)制粘貼到百度(能上谷歌更好癣防,但要求翻墻和英文),你會(huì)看到一堆人問過類似的問題掌眠。你要記住蕾盯,你碰到的問題往往有很多人也遇到過,要善于學(xué)習(xí)前人經(jīng)驗(yàn)蓝丙,互聯(lián)網(wǎng)不就是干這個(gè)的嗎级遭?

學(xué)會(huì)提問

如果搜索引擎還解決不了你的問題,也不要慌渺尘,Python有很多用戶社區(qū)挫鸽,有許多樂于助人的Pythoner愿意互相幫助。這里我只推薦一個(gè)Stack Overlow鸥跟。它幫助我解決了無數(shù)在使用Python中遇到的問題丢郊,而且,我還一個(gè)問題都沒有自己提過锌雀,全都是別人遇到過的蚂夕。不過這又是個(gè)英文網(wǎng)站,除了看懂需要一點(diǎn)詞匯量外腋逆,要準(zhǔn)確描述并搜索你的問題婿牍,也對(duì)英語水平略有要求,但是這是值得的惩歉。你想想等脂,英語社區(qū)是全球Python用戶在使用和交流,而中文則只有國內(nèi)撑蚌,你覺得在哪里更有可能找到問題的答案上遥?學(xué)編程順便把英語也學(xué)了,多好争涌,哈哈粉楚。

但是如果你要提問,一定要學(xué)會(huì)提問。就我經(jīng)歷過的模软,就有很多扎心的問題伟骨,有時(shí)甚至讓人有些惱火。報(bào)錯(cuò)以后燃异,不檢查代碼張嘴就問携狭,結(jié)果是自己寫錯(cuò)了一個(gè)字母,漏了一個(gè)括號(hào)回俐;還有連報(bào)錯(cuò)信息都不給我逛腿,把代碼截個(gè)圖就問我哪錯(cuò)了,當(dāng)我是人肉編譯器仅颇?单默??
當(dāng)你要提問時(shí)灵莲,記住以下幾點(diǎn):

  • 解釋你想做什么雕凹,而不要只說你做了什么。這樣懂行的往往一眼就能看出你是不是走錯(cuò)了方向政冻。
  • 明確發(fā)生錯(cuò)誤的時(shí)刻枚抵。錯(cuò)誤是一直就有還是在你進(jìn)行了某一操作之后?
  • 將你的代碼和報(bào)錯(cuò)信息完整的展示出來
  • 說明你為解決這個(gè)問題都做了哪些努力明场。一方面為幫助者排除一些可能汽摹,另一方面,也顯示出你自己努力過了苦锨,不是一個(gè)伸手黨逼泣。
  • 說明你的Python版本和操作系統(tǒng)機(jī)器版本。
  • 如果錯(cuò)誤出現(xiàn)在你修改了你的代碼后舟舒,說明你做了什么修改拉庶。
  • 說明你是否能夠每次復(fù)現(xiàn)你的錯(cuò)誤。是每次運(yùn)行程序都報(bào)錯(cuò)秃励,還是只有進(jìn)行某些操作后報(bào)錯(cuò)氏仗?是的話,是哪些操作夺鲜?
    大概就是這個(gè)思路皆尔,總之,注意網(wǎng)絡(luò)禮節(jié)币励,不要當(dāng)伸手黨慷蠕。

結(jié)語

最后直接引用Al Sweigart的一段話作為結(jié)語吧:

For most people, their computer is just an appliance instead of a tool. But by learning how to program, you’ll gain access to one of the most powerful tools of the modern world, and you’ll have fun along the way. Programming isn’t brain surgery—it’s fine for amateurs to experiment and make mistakes.

中文版:想要吃雞?蟒就行了食呻!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末流炕,一起剝皮案震驚了整個(gè)濱河市澎现,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌每辟,老刑警劉巖昔头,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異影兽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)莱革,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門峻堰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人盅视,你說我怎么就攤上這事捐名。” “怎么了闹击?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵镶蹋,是天一觀的道長。 經(jīng)常有香客問我赏半,道長贺归,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任断箫,我火速辦了婚禮拂酣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仲义。我一直安慰自己婶熬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布埃撵。 她就那樣靜靜地躺著赵颅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪暂刘。 梳的紋絲不亂的頭發(fā)上饺谬,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音鸳惯,去河邊找鬼商蕴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛芝发,可吹牛的內(nèi)容都是我干的绪商。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼辅鲸,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼格郁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤例书,失蹤者是張志新(化名)和其女友劉穎锣尉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體决采,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡自沧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了树瞭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拇厢。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晒喷,靈堂內(nèi)的尸體忽然破棺而出孝偎,到底是詐尸還是另有隱情,我是刑警寧澤凉敲,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布衣盾,位于F島的核電站,受9級(jí)特大地震影響爷抓,放射性物質(zhì)發(fā)生泄漏势决。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一废赞、第九天 我趴在偏房一處隱蔽的房頂上張望徽龟。 院中可真熱鬧,春花似錦唉地、人聲如沸据悔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽极颓。三九已至,卻和暖如春群嗤,著一層夾襖步出監(jiān)牢的瞬間菠隆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國打工狂秘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骇径,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓者春,卻偏偏與公主長得像破衔,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钱烟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,180評(píng)論 25 707
  • 轉(zhuǎn)眼到了六月份晰筛,大學(xué)組織紛紛都開始了送舊迎新的換屆工作嫡丙。而我剛剛主持完一場(chǎng)換屆大會(huì),從大學(xué)組織里的學(xué)生干部到榮身退...
    三三先生閱讀 1,332評(píng)論 31 23
  • 我沒有想象的成熟读第,也沒有想象的快樂曙博,但是比想象的孤寂也落寞。
    甘汝月閱讀 166評(píng)論 0 0
  • 前段時(shí)間,有朋友推薦東野圭吾的小說都不錯(cuò)吴汪,豆瓣評(píng)論很高尘吗,尤其是《解憂雜貨店》挺火的。昨天一下午沒事干浇坐,打開這本書看...
    孤_傲閱讀 216評(píng)論 0 0
  • Alamofire中Request和Response是關(guān)于網(wǎng)絡(luò)請(qǐng)求請(qǐng)求響應(yīng),Request有四種類型data黔宛,do...
    FlyElephant閱讀 623評(píng)論 0 3