《從Python開始學(xué)編程》第1~3章

第一章? 用編程改造世界

第二章? 先做鍵盤俠

第三章? 過程大于結(jié)果


第一章 用編程改造世界

1.1 從計(jì)算機(jī)到編程

·馮.諾伊曼結(jié)構(gòu)

」逄辏控制器:管理計(jì)算機(jī)其他部分的工作仇穗,決定執(zhí)行指令的順序腮郊,控制不同部件之間的數(shù)據(jù)交流

狱庇。運(yùn)算器:進(jìn)行運(yùn)算的部件宁赤,進(jìn)行+舀透,—,*决左,/愕够,與,或佛猛,非的運(yùn)算惑芭,與控制器一起構(gòu)成了CPU

。存儲(chǔ)器:存儲(chǔ)信息的部件(馮.諾依曼提出存儲(chǔ)器不但要記錄數(shù)據(jù)继找,還要記錄所要執(zhí)行的程序)

遂跟。輸入設(shè)備:向計(jì)算機(jī)輸入信息的設(shè)備,如鍵盤码荔,鼠標(biāo)漩勤,攝像頭等

。輸出設(shè)備:計(jì)算機(jī)向外輸出信息的設(shè)備缩搅,如顯示屏越败,打印機(jī),音響等

1.2 所謂的編程硼瓣,是做什么的

·封裝:把執(zhí)行特殊功能的指令打包成一個(gè)程序塊究飞,然后給這個(gè)程序塊起個(gè)容易查詢的名字。如果需要重復(fù)使用堂鲤,則可通過名字調(diào)用

·封裝代碼的方式有很多種亿傅,根據(jù)不同的方式,寫程序時(shí)要遵循特定的編程方式(eg:面向過程的C語言瘟栖,面向?qū)ο蟮腏ava語言葵擎,面向函數(shù)的Lisp語言)(Python是一門多范式語言)

1.3 為什么學(xué)Python

從Python開始學(xué)習(xí)編程的好處:語法簡單,模塊豐富等

1.4 最簡單的Hello Word

·print()函數(shù):在屏幕上打印出字符半哟,函數(shù)括號(hào)里的內(nèi)容即要打印出來的字符酬滤,括號(hào)里的" "并沒有打印在屏幕上,其作用是從print之類的程序文本中標(biāo)記出普通字符寓涨,以免計(jì)算機(jī)混淆盯串。也可以用' '替換" "

·注釋

。注釋:用一些文字來解釋某一段程序戒良,在Python的程序文件中体捏,每一行中從#開始的文字都是注釋,注釋的內(nèi)容并不會(huì)被當(dāng)作程序執(zhí)行

。單行注釋:用#


几缭。多行注釋:標(biāo)志符是三個(gè)連續(xù)的雙引號(hào)河泳,也可以使用三個(gè)連續(xù)的單引號(hào)


▲:如果想要在Python 2中使用中文,則需要在程序開始之前加上一行編碼信息 (# -


奏司。*- coding: utf-8 -*- )乔询,以說明程序文件中使用了支持中文的utf-8編碼。在Python 3中不需要這一行信息


第2章 先做鍵盤俠

2.1 計(jì)算機(jī)會(huì)算術(shù)

·數(shù)值運(yùn)算

韵洋。常見的數(shù)值運(yùn)算:

竿刁。除了常見的數(shù)值運(yùn)算,字符串也能進(jìn)行加法運(yùn)算搪缨。其效果是把兩個(gè)字符串連成一個(gè)字符串

食拜。一個(gè)字符串還能和一個(gè)整數(shù)進(jìn)行乘法運(yùn)算(一個(gè)字符串與一個(gè)整數(shù)n相乘的話,會(huì)把該字符串重復(fù)n次)

·邏輯運(yùn)算

副编。布爾值(Boolean): Ture,False

负甸。在Python中,用and來表示"與"的邏輯運(yùn)算痹届,在“與”運(yùn)算中呻待,兩個(gè)子命題必須都為真時(shí),用“與”連接起來的復(fù)合命題才是真

队腐。Python用or來進(jìn)行“或”的邏輯運(yùn)算蚕捉,在“或”運(yùn)算中,只要有一個(gè)命題為真柴淘,那么用“或'連接起來的復(fù)合命題就是真

迫淹。Python使用not這個(gè)關(guān)鍵字來表示非運(yùn)算

·判斷表達(dá)式

。判斷表達(dá)式符號(hào):==

为严。其他的判斷運(yùn)算符:

敛熬!=? 不等于 ? ???

<? 小于 ??

?<= ? 小于或等于 ? ?

?>? 大于 ?? >

=? 大于或等于

·運(yùn)算優(yōu)先級(jí)

。運(yùn)算符可以按照優(yōu)先級(jí)先后歸為:


第股。如果是相同優(yōu)先級(jí)的運(yùn)算符应民,那么Python會(huì)按照從左向右的順序進(jìn)行運(yùn)算:

。如果有優(yōu)先級(jí)高的運(yùn)算符夕吻,Python會(huì)打破從左向右的默認(rèn)次序诲锹,執(zhí)行優(yōu)先級(jí)高的運(yùn)算,比如:括號(hào)會(huì)打破運(yùn)算優(yōu)先級(jí)梭冠。如果有括號(hào)存在辕狰,會(huì)先進(jìn)行括號(hào)中的運(yùn)算

2.2計(jì)算機(jī)記性好

·變量革命

改备。用變量的方式來存儲(chǔ)數(shù)據(jù):給變量起一個(gè)變量名控漠,在程序中作為該變量空間的索引。數(shù)據(jù)交給變量,然后在需要的時(shí)候通過變量的名字來提取數(shù)據(jù)盐捷。(從硬件的角度來看偶翅,給變量賦值的過程,就是把數(shù)據(jù)存入內(nèi)存的過程)

碉渡。在計(jì)算機(jī)編程時(shí)聚谁,經(jīng)常設(shè)置許多變量,讓每個(gè)變量存儲(chǔ)不同功能的數(shù)據(jù)滞诺,比如:

形导。另外,可根據(jù)情況增大或減小變量的值

习霹。變量提供的符號(hào)化表達(dá)方式朵耕,是實(shí)現(xiàn)代碼復(fù)用的第一步。

·變量的類型

淋叶。數(shù)據(jù)類型:整數(shù)(Integer)阎曹,浮點(diǎn)數(shù)(Float),布爾值(Boolean)煞檩,字符串(String,簡寫為bool)等



处嫌。Python中,可以把各種類型的數(shù)據(jù)賦予同一個(gè)變量


斟湃。變量類型

一動(dòng)態(tài)類型;能自由改變變量類型的特征

一靜態(tài)類型:變量有事先說明好的類型熏迹,特定類型的數(shù)據(jù)必須存入特定類型的變量

。type()函數(shù):查看變量類型

桐早。常見變量類型:


癣缅。計(jì)算機(jī)的存儲(chǔ)空間以位(bit)為單位,每一位能存儲(chǔ)一個(gè)0或1的數(shù)字哄酝。為了記錄一個(gè)布爾值友存,只需讓1代表真值,0代表假值就可以陶衅。

屡立。計(jì)算機(jī)在內(nèi)存中必須要分類型存儲(chǔ)

.序列

。序列:序列包含的一個(gè)數(shù)據(jù)被稱為序列的一個(gè)元素搀军。序列可以包含一個(gè)或多個(gè)元素?也可以是完全沒有任何元素的空序列

膨俐。兩種序列:元組(Tuple)和列表(List)。二者的主要區(qū)別在于罩句,一旦建立焚刺,元組的各個(gè)元素不可再變更。

门烂。同一個(gè)序列可包含不同類型的元素?也是Python動(dòng)態(tài)類型的一個(gè)體現(xiàn)乳愉。此外兄淫,序列的元素不僅可是基本類型的數(shù)據(jù),還可以是另外一個(gè)序列

蔓姚。由于元組不能改變數(shù)據(jù)捕虽,所以很少會(huì)建立一個(gè)空的元組。而序列可以增加和修改元素?所以Python經(jīng)常會(huì)建立一個(gè)空表

坡脐。序列元素的位置索引稱為下標(biāo)泄私。第一個(gè)元素的下標(biāo)為0

。表的數(shù)據(jù)可變更备闲,可以對(duì)單個(gè)元素進(jìn)行賦值晌端,通過下標(biāo)說明想對(duì)哪個(gè)元素賦予怎樣的值,但不能對(duì)元組的元素進(jìn)行賦值

恬砂。通過范圍引用的方式斩松,來找到多個(gè)元素。范圍引用的基本樣式是:序列名[下限:上限:步長]下限表示起始下標(biāo)?上限表示結(jié)尾下標(biāo)觉既。在起始和結(jié)尾下標(biāo)之間惧盹,按照步長間隔找到元素?默認(rèn)步長為1

。表的范圍引用與元組同瞪讼。在范圍英語中钧椰,如果寫明上限,那么上限下標(biāo)指向的元素講不包括在結(jié)果中

尾部引用


.詞典

詞典的很多方面和表類似符欠,是一個(gè)可以容納多個(gè)元素的容器嫡霞,但是詞典不是以位置來作為索引的?詞典允許用自定義的方式來建立數(shù)據(jù)的索引

可在詞典中修改或增添一個(gè)元素的值,也可構(gòu)建一個(gè)新的空的詞典

2.3計(jì)算機(jī)懂選擇

.if結(jié)構(gòu)

if?結(jié)構(gòu):條件語句

希柿。if...else...語句:if?與else?分別有隸屬于它們的一行代碼诊沪,從屬代碼開頭會(huì)有四個(gè)空格的縮進(jìn),程序會(huì)根據(jù)if后的條件是否成立曾撤,選擇執(zhí)行if的從屬代碼端姚,還是執(zhí)行else的從屬代碼

。也可寫只有if的程序?如果if后的條件不成立挤悉,那么計(jì)算機(jī)什么都不用執(zhí)行

.小弟靠后站

縮進(jìn):Python中通過縮進(jìn)來識(shí)別出隸屬關(guān)系渐裸,Python中的縮進(jìn)

.if的嵌套與elif

Python先檢測(cè)if的條件,如果if的條件為假装悲,則跳過隸屬于if的程序塊昏鹃,檢測(cè)elif的條件

.2.4計(jì)算機(jī)循環(huán)

·for?循環(huán):

序列中元素的個(gè)數(shù)決定了循環(huán)重復(fù)的次數(shù)诀诊,for循環(huán)的重復(fù)次數(shù)是確定的洞渤,for循環(huán)會(huì)依次從序列中取出元素,賦予跟緊在for后面的變量

属瓣。如果只是想簡單地重復(fù)特定的次數(shù)载迄,不想建立序列奈懒,則可:


程序中的5向range()函數(shù)說明了需要重復(fù)的次數(shù),而for循環(huán)后面依然有一個(gè)變量i宪巨,它為每次循環(huán)起到了計(jì)數(shù)的功能

.while循環(huán)

。while后面緊跟一個(gè)條件溜畅,如果條件為真捏卓,則while會(huì)不停地循環(huán)執(zhí)行隸屬于它的語句。只有條件為假時(shí)慈格,程序才會(huì)停止

怠晴。一旦有了無限循環(huán),程序就會(huì)不停地運(yùn)行下去浴捆,直到程序被打斷或電腦關(guān)機(jī)

.跳過或停止

蒜田。continue:跳過循環(huán)的這一次執(zhí)行,進(jìn)行下一次的循環(huán)操作

选泻。break:停止執(zhí)行整個(gè)循環(huán)

.附錄:代碼規(guī)范


第三章?過程大于結(jié)果

3.1?懶人炒菜機(jī)

.定義函數(shù)

冲粤。def:通知Python要定義函數(shù)了在函數(shù)名后面還有一個(gè)括號(hào),用來說明函數(shù)有哪些參數(shù)页眯,參數(shù)可以有多個(gè)梯捕,也可以完全沒有,但即使沒有輸入數(shù)據(jù)窝撵,函數(shù)后面的括號(hào)也要保留

傀顾。形參:即函數(shù)定義中的參數(shù),是一個(gè)形式代表碌奉,并非真實(shí)數(shù)據(jù)

短曾。return:用于說明函數(shù)的返回值,可返回多個(gè)值赐劣;此外嫉拐,return還起到中止函數(shù)和制定返回值的功能嗎

.調(diào)用函數(shù)

。函數(shù)調(diào)用:把真實(shí)的數(shù)據(jù)填入到括號(hào)中魁兼,作為參數(shù)傳遞給函數(shù)椭岩,除具體的數(shù)據(jù)表達(dá)式外,參數(shù)還可以是程序中已經(jīng)存在的變量

璃赡。?實(shí)參:是括號(hào)里具體的參數(shù)判哥,在函數(shù)調(diào)用時(shí)出現(xiàn)

。調(diào)用函數(shù)獲得返回值后碉考,常把返回值賦給變量

.函數(shù)文檔

塌计。help()函數(shù):用來找到某個(gè)函數(shù)的說明文檔

以下以函數(shù)max()為例

。對(duì)于自定義的函數(shù)侯谁,需要自己加上注釋锌仅,在參數(shù)和返回值上要盡量寫得詳細(xì)

3.2參數(shù)傳遞

.基本傳參

章钾。參數(shù)傳遞:即把數(shù)據(jù)用參數(shù)的形式輸入到函數(shù)

如果只有一個(gè)參數(shù),只需把函數(shù)調(diào)用時(shí)輸入的唯一數(shù)據(jù)對(duì)應(yīng)為參數(shù)既可热芹;

贱傀。位置傳參:如果有多個(gè)參數(shù),那么在調(diào)用函數(shù)時(shí)伊脓,Python會(huì)根據(jù)位置來確認(rèn)數(shù)據(jù)對(duì)應(yīng)哪個(gè)參數(shù)

府寒。關(guān)鍵字傳參:根據(jù)參數(shù)名讓數(shù)據(jù)與符號(hào)對(duì)應(yīng)上

。此外报腔,位置傳遞與關(guān)鍵字傳遞可以混合使用

.包裹傳參

株搔。包裹位置傳參:所有的數(shù)據(jù)都根據(jù)先后順序,收集到一個(gè)元組纯蛾。在函數(shù)內(nèi)部纤房,通過元組來讀取傳入的數(shù)據(jù)

。在定義package_position()時(shí)要在元組名all?arguments前加*號(hào)

.包裹關(guān)鍵字傳參:把傳入的數(shù)據(jù)收集為一個(gè)詞典翻诉,當(dāng)函數(shù)調(diào)用時(shí)炮姨,所有參數(shù)會(huì)收集到數(shù)據(jù)容器里,把數(shù)據(jù)傳遞給函數(shù)使用

碰煌。為了提醒剑令,參數(shù)all-arguments是包裹關(guān)鍵字傳遞所用的字典,因此在all_arguments前加**

拄查。包裹位置傳參和包裹關(guān)鍵字傳參還可以混合使用

吁津。包裹傳參和基本傳參混合使用,其出現(xiàn)順序:位置一關(guān)鍵字一包裹位置一包裹關(guān)鍵字

·解包裹

堕扶。解包裹:把一個(gè)數(shù)據(jù)容器傳遞給函數(shù)碍脏,再自動(dòng)地分解為各個(gè)參數(shù)

。包裹傳參和解包裹不是相反操作稍算,而是兩個(gè)相對(duì)獨(dú)立的功能

典尾。元組解包裹:在args前加上*符號(hào),來提醒Python?糊探,把元組拆成單個(gè)元素蒸眠,每一個(gè)元素對(duì)應(yīng)函數(shù)的一個(gè)位置參數(shù)

暇务。詞典解包裹:在args前加上**符號(hào)响委,在傳遞詞典args時(shí)崭别,讓詞典的每個(gè)鍵值作為一個(gè)關(guān)鍵字傳遞給函數(shù)unpackage()

。解包裹用于函數(shù)調(diào)用瞪慧,在調(diào)用函數(shù)時(shí)髓考,幾種參數(shù)的傳遞也可以混合,順序?yàn)?位置一關(guān)鍵字一位置解包裹一關(guān)鍵字解包裹

3.3遞歸

.高斯求和和數(shù)學(xué)歸納法

.函數(shù)棧

弃酌。棧:數(shù)據(jù)結(jié)構(gòu)的一種氨菇,可以有序地存儲(chǔ)數(shù)據(jù)

儡炼。特征:后進(jìn)先出;只支持兩個(gè)操作:pop和push查蓉,棧用彈出(pop)操作來取出棧頂元素乌询,用推入(push)操作將一個(gè)新的元素存入棧頂

。程序運(yùn)行的過程:可看作一個(gè)先增長棧后消滅棧的過程

豌研。變量的作用域:函數(shù)內(nèi)部可以創(chuàng)建新變量妹田,Python尋找變量的范圍不止是當(dāng)前幀,它還會(huì)尋找函數(shù)外部(即主程序)中定義了的變量

一當(dāng)主程序中已經(jīng)有了一個(gè)變量聂沙,函數(shù)調(diào)用內(nèi)部可以通過賦值的方式創(chuàng)建了一個(gè)同名變量。函數(shù)會(huì)優(yōu)先使用自己函數(shù)幀中的變量

一且函數(shù)內(nèi)部使用的是自己內(nèi)部的變量初嘹,所以函數(shù)內(nèi)部對(duì)變量的操作不會(huì)影響到外部變量(特例:對(duì)于數(shù)據(jù)容器及汉,函數(shù)內(nèi)部的更改會(huì)影響到外部)

3.4引入那把寶劍

.引入模塊

.搜索路徑

。在引入模塊時(shí)屯烦,把庫文件和應(yīng)用文件放在了同一文件夾下坷随,當(dāng)在該文件夾下運(yùn)行程序時(shí),Python會(huì)自動(dòng)在當(dāng)前文件夾搜索它想要引入的模塊

驻龟。標(biāo)準(zhǔn)庫是Python官方提供的庫温眉,Python會(huì)自動(dòng)搜索標(biāo)準(zhǔn)庫所在的路徑

3.5異常處理

.惱人的bug

。語法錯(cuò)誤翁狐,比如类溢,下面程序錯(cuò)用了語法,在for的一行沒有加引號(hào)


露懒。運(yùn)行時(shí)錯(cuò)誤

這種錯(cuò)誤只有在運(yùn)行時(shí)闯冷,編譯器才會(huì)發(fā)現(xiàn)。比如:下面的程序并沒有語法上的錯(cuò)誤懈词,但在Python運(yùn)行時(shí)蛇耀,會(huì)發(fā)現(xiàn)引用的下標(biāo)超出了列表元素的范圍;


程序會(huì)中途報(bào)錯(cuò):


。語義錯(cuò)誤

一這種錯(cuò)誤坎弯,編譯器認(rèn)為程序沒有問題纺涤,可以正常運(yùn)行。但當(dāng)檢查程序時(shí)抠忘,卻發(fā)現(xiàn)程序并非想做的

.Debug

撩炊。debug:即修復(fù)程序缺陷

.異常處理

。異常處理語句:try-except語句

崎脉。異常處理完整的語法形式:


代碼地址:https://gitee.com/mabingqi/learn_programming_from_python

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末衰抑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子荧嵌,更是在濱河造成了極大的恐慌呛踊,老刑警劉巖砾淌,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異谭网,居然都是意外死亡汪厨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門愉择,熙熙樓的掌柜王于貴愁眉苦臉地迎上來劫乱,“玉大人,你說我怎么就攤上這事锥涕≈愿辏” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵层坠,是天一觀的道長殖妇。 經(jīng)常有香客問我,道長破花,這世上最難降的妖魔是什么谦趣? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮座每,結(jié)果婚禮上前鹅,老公的妹妹穿的比我還像新娘。我一直安慰自己峭梳,他們只是感情好舰绘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著葱椭,像睡著了一般除盏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挫以,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天者蠕,我揣著相機(jī)與錄音,去河邊找鬼掐松。 笑死踱侣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的大磺。 我是一名探鬼主播抡句,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼杠愧!你這毒婦竟也來了待榔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锐锣,沒想到半個(gè)月后腌闯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雕憔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年姿骏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斤彼。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡分瘦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出琉苇,到底是詐尸還是另有隱情嘲玫,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布并扇,位于F島的核電站去团,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拜马。R本人自食惡果不足惜渗勘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一沐绒、第九天 我趴在偏房一處隱蔽的房頂上張望俩莽。 院中可真熱鬧,春花似錦乔遮、人聲如沸扮超。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽出刷。三九已至,卻和暖如春坯辩,著一層夾襖步出監(jiān)牢的瞬間馁龟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工漆魔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坷檩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓改抡,卻偏偏與公主長得像矢炼,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子阿纤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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