
標題無意冒犯,就是覺得這個廣告挺好玩的
上面這張思維導圖喜歡就拿走,反正我也學不了這么多
好,切入正題
文章目錄
- 前言
- Python語言概覽
- Python語言的起源
- 資料型別
- Number資料型別
- 容器資料型別
- str 字串型
- 元字串
- 字串的格式化
- list 串列型([])
- 串列的修改
- tuple 元組型 ( () )
- set 集合型 ({})
- dict 字典 ( {"aaa":"bbb",})
- 補充
- 四則運算
- 字串拼接
- 強制型別轉換
- str()
- int()
- float()
- 總結一下
- 標準輸入輸出
- print()函式
- input()函式
- 注意點
- 控制陳述句
- 條件控制陳述句
- if判斷
- if···else···
- if···elif···else
- if嵌套
- for···in···回圈
- range()函式
- 回圈使用 else 陳述句
- while回圈
- 其他
- break
- continue
- pass
- 對比兩種回圈
- 練手小專案
- 長尾流量優化
前言
本系列文默認各位有一定的C或C++基礎,因為我是學了點C++的皮毛之后入手的Python,這里也要感謝齊鋒學長送來的支持,
本系列文默認各位會百度,會用在線編譯器,因為我是突擊學Python的,之前的編譯環境都刪了,但是吧,我發現在線編譯是真的爽,浪費那時間去搭那環境干啥,學好了Python,會差那點請人搭環境的錢嗎?
我要的不多,點個關注就好啦
然后呢,本系列的目錄嘛,說實話我個人比較傾向于那兩本 Primer Plus,所以就跟著它們的目錄結構吧,
本系列也會著重培養各位的自主動手能力,畢竟我不可能把所有知識點都給你講到,所以自己解決需求的能力就尤為重要,所以我在文中埋得坑請不要把它們看成坑,那是我留給你們的鍛煉機會,請各顯神通,自行解決,
Python語言概覽
Python語言的起源
老生常談了,但是追本溯源有時候會有它意想不到的好處,全在個人悟性了,
Python的作者,Guido von Rossum,確實是荷蘭人,1982年,Guido從阿姆斯特丹大學(University of Amsterdam)獲得了數學和計算機碩士學位,然而,盡管他算得上是一位數學家,但他更加享受計算機帶來的樂趣,用他的話說,盡管擁有數學和計算機雙料資質,他總趨向于做計算機相關的作業,并熱衷于做任何和編程相關的活兒,

在那個時候,他接觸并使用過諸如Pascal、C、 Fortran等語言,這些語言的基本設計原則是讓機器能更快運行,所有的編譯器的核心是做優化,以便讓程式能夠運行,為了增進效率,語言也迫使程式員像計算機一樣思考,以便能寫出更符合機器口味的程式,在那個時代,程式員恨不得用手榨取計算機每一寸的能力,
然而,這種思考方式讓Guido感到苦惱,Guido知道如何用C語言寫出一個功能,但整個撰寫程序需要耗費大量的時間 ,他的另一個選擇是shell,然而,shell的本質是呼叫命令,它并不是一個真正的語言,比如說,shell沒有數值型的資料型別,加法運算都很復雜,總之,shell不能全面的調動計算機的功能,
Guido希望有一種語言,這種語言能夠像C語言那樣,能夠全面呼叫計算機的功能介面,又可以像shell那樣,可以輕松的編程,
1989年,為了打發圣誕節假期,Guido開始寫Python語言的編譯/解釋器,Python來自Guido所摯愛的電視劇Monty Python’s Flying Circus ,他希望這個新的叫做Python的語言,能實作他的理念(一種C和shell之間,功能全面,易學易用,可拓展的語言),Guido作為一個語言設計愛好者,已經有過設計語言的(不很成功)的嘗試,這一次,也不過是一次純粹的hacking行為,
1991年,第一個Python編譯器(同時也是解釋器)誕生,它是用C語言實作的,并能夠呼叫C庫(.so檔案),從一出生,Python已經具有了:類(class),函式(function),例外處理(exception),包括表(list)和詞典(dictionary)在內的核心資料型別,以及模塊(module)為基礎的拓展系統,
資料型別

Number資料型別
int 整型 (正整形 0 負整型)
float 浮點型即小數
bool 布爾型 (True 真 False假)
插一個
complex 復數型別(這個我寫代碼兩年多,也是沒用過了)
#表達方式一:
complexvar = 5 + 6j
complexvar = 3 - 2j
print(type(complexvar))
print(id(complexvar))
#表達方式二:
complex(實數,虛數)
res = complex(14,2)
print(res) => (14,2)
容器資料型別
str 字串型
'''用引號引起來的就是字串,三種引號:單引號 雙引號 三引號'''
轉義字符:\ (1)把有意義的字符轉變為無意義的字符
(2)把無意義的字符轉變的有意義
\n 或者 \r\n : 代表"換行"意思
\t : 代表"一個縮進"意思
\r : 代表將\r后面得所有字符拉到該行首
至于其他轉義字符,這里不多贅述
特征:可以獲取,但不可以修改,有序排列
獲取字串中的資料:跟串列list 元組tuple的取值一模一樣(正向下標,反向下標)
元字串
‘’‘元字串可以讓轉義字符失效’’’

字串的格式化
“%d %f %s” 語法 : “字串” % (實際值)
%d 占位符 d代表整型資料,%nd表示占n個位置

結果:XXX買了3個充氣娃娃
%f 占位符 f代表浮點型資料 默認保留6位小數點,f前面有數值,則根據數值是多少保留對應小數點

結果:今天大白菜2.35元一斤

結果:今天大白菜2.3元一斤
%s 占位符 代表字串

list 串列型([])
‘’‘特征:可以獲取和修改資料,排列有序’’’

串列的修改

tuple 元組型 ( () )
‘’‘特征:可以獲取但不能修改資料,排列有序’’’

獲取元組中的資料 : 跟串列list的取值一模一樣 (正向下標,反向下標)
set 集合型 ({})
setvar = {} 資料型別顯示是一個dict 字典
特征:不可獲取,也不可以修改,無序排列,自動去掉重復資料
dict 字典 ( {“aaa”:“bbb”,})
冒號左邊是鍵,右邊是值,鍵值對之間用逗號隔開
特征 : 可以獲取,可以修改,無序排列
底層使用了哈希演算法,儲存的資料是散列,鍵值對儲存的資料
獲取字典當中的資料:可以獲取,直接輸入冒號左邊的鍵即可取值的資料
修改字典當中的資料:可以修改,直接將要改的值替換掉 鍵 就可實作修改
一般在命名字典的鍵時,推薦使用字串,按照變數命名的字串.

補充
獲取資料型別的函式:type()
獲取變數地址的函式:id()
四則運算

不過,對于這么多的算術運算子,我建議你先看一遍,有個大致的印象就行,你可以先把這張圖保存上,等用的時候再找出來,對應著查閱就可以,
咱們再說說一樣的——運算優先級:Python世界的運算優先級,和我們平時的計算優先級是一樣的,

字串拼接
Python有一個很優秀的點我很喜歡,那就是它的字串拼接,
曾經有人說,編程,說到底就是對字串的操作,我覺得他說的很有道理,別看那些花里胡哨的,說到底都是操作字串,
反正C/C++里的字串操作已經讓我喝好幾壺了,還沒喝夠,
Python里面字串拼接的方法可簡單了,就是利用字串拼接符號【+】,將需要拼接的變數連在一起就行了,

但是,既然是字串拼接,那它的限制其實就很明顯了,你得拿字串來拼接,
那如果我要拿去拼的東西參差不齊呢?怎么辦?別急
強制型別轉換
負責轉換資料型別的函式一共有3種:str()、 int()和float(),

str()
str()函式能將資料轉換成其字串型別,不管這個資料是int型別還是float型別,只要放到括號里,這個資料就能搖身一變,成為字串型別,
是不是挺簡單的?我們只需通過str(number)一個步驟,便可以將整數型別的【153】轉化為字串型別的【153】,成功完成資料拼接,
int()
將資料轉換為整數型別的方法也很簡單,就是int()函式,其使用方法同str()一樣,將你需要轉換的內容放在括號里就行,像這樣:int(轉換的內容),
不過對于int()函式的使用,大家要注意一點:只有符合整數規范的字串類資料,才能被int()強制轉換,
別看它雖然只有一句話,但它其實帶有三層含義:
首先,整數形式的字串比如'6'和'1',可以被int()函式強制轉換,
其次,文字形式,比如中文、火星文或者標點符號,不可以被int()函式強制轉換,
最后,小數形式的字串,由于Python的語法規則,也不能使用int()函式強制轉換,
雖然浮點形式的字串,不能使用int()函式,但浮點數是可以被int()函式強制轉換的(去尾法)
float()
首先float()函式的使用,也是將需要轉換的資料放在括號里,像這樣:float(資料),
其次,float()函式也可以將整數和字串轉換為浮點型別,但同時,如果括號里面的資料是字串型別,那這個資料一定得是數字形式,
那么,經過之前str()和int()操練,float()函式是不是好懂了一些?
總結一下

標準輸入輸出
好滴吧,可能有的人會犯嘀咕,為什么不講輸入輸出,莫急嘛
print()函式
括號內是數字的情況
print(520)
括號內是單引號的情況,
print('一起玩吧')
括號內是雙引號的情況,
print("一起玩吧")
括號內單雙引號同時存在的情況,
print("Let's play")
當然,括號內也可以是三引號,參考上面單雙同時出現的情況就知道了,
之所以現在才說輸入輸出,是因為這里面實在可以包含太多東西了,不要被上面的這幾個例子所迷惑,print可以列印各種資料型別,參考本文前面出現的print()以及后面將會出現的print()
input()函式
首先,讓我們通過一段代碼,來看一看input()函式是如何使用的:
input('請在以下四個選項【格蘭芬多;斯萊特林;拉文克勞;赫奇帕奇】中,輸入你想去的學院名字:')
input()函式是輸入函式,就上面例子來講,它需要你輸入針對括號內’請在以下四個選項【格蘭芬多;斯萊特林;拉文克勞;赫奇帕奇】中,輸入你想去的學院名字:'的答案,
所以,當你在函式的括號內寫出問題時,input()函式會將此問題原樣顯示在螢屏上,并在終端區域等待你針對此問題的回答,
可是,我們為什么要在終端處輸入回答呢?不輸入行不行?
事實上,我們可以把input()函式當作一扇鏈接現實世界與代碼世界的門,
當問題從代碼世界傳遞給我們,可我們卻沒有回答時,這扇等待輸入的input()大門,就會一直處于敞開狀態,一直等著你往里送回答,
注意點
對于input()函式來說,不管我們輸入的回答是什么,不管你輸入的是整數1234,還是字串『隱形斗篷是我最想擁有的魔法』,input()函式的輸入值(搜集到的回答),永遠會被【強制性】地轉換為【字串】型別,
這時候就要對輸入的資料進行強制型別轉換了:choice = int(input('請輸入您的選擇:'))
控制陳述句
條件控制陳述句
if判斷


在這里,你可能注意到了一個細節:在條件判斷代碼中的冒號:后、下一行內容的前面,會空幾個格,但這是為什么呢?
首先,在計算機的溝通語言中,空格的學名叫縮進,比如我們寫文章都要空兩個格,這就叫首行縮進,
icon
對于Python而言,冒號和縮進是一種語法,它會幫助Python區分代碼之間的層次,理解條件執行的邏輯及先后順序,【注:縮進是四個空格】這里建議不要用tab,就四個空格的事情嘛,年輕人那么懶干嘛,養成習慣之后很多地方受限制,

if···else···
很多時候,我們不能把雞蛋放在一個籃子里,要做好兩手準備:如果不滿足條件時,我們要怎么辦,
Python則很貼心地,讓我們借用if…else…陳述句,讓碼農們有了另一種選擇——【如果…不滿足,就…】

在if…else條件陳述句中,if和else各自抱團,形成兩個不同的代碼塊,表示的是條件和其他條件的互斥關系——如果不滿足if條件,就執行else其他條件,
if···elif···else
在判斷3個或3個以上的條件時,我們就需要借助Python中的多向判斷命令:if…elif…else…,
當判斷的條件超過3個時,中間的多個條件都可以使用elif,

elif后可不接else
if嵌套
像這種如果底下還有如果(即條件里還套條件)的情況,我們如何用Python把上面的規則寫出來,并得出評價呢?
答案就是——嵌套條件,

for···in···回圈
Python for回圈可以遍歷任何序列的專案,如一個串列或者一個字串,
for回圈的語法格式如下:
for iterating_var in sequence:
statements(s)

for letter in 'Python': # 第一個實體
print ('當前字母 :', letter)
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二個實體
print ('當前水果 :', fruit)
print ("Good bye!")
可以看出,模板中的iterating_var 是不用提前賦值的,
range()函式
使用range(a,b) 函式,你可以生成了一個【取頭不取尾】的整數序列,
例如:
for i in range(13,17):
print(i)
結果:13、14、15、16
、
range()函式還有一種用法,我們來直接體驗一下:
for i in range(0,10,3):
print(i)
這是一種切片方式,第三個引數被稱作“步長”,即間隔多少取一個數,
那么這個代碼執行的結果就是:0、3、6、9
回圈使用 else 陳述句
在 python 中,for … else 表示這樣的意思,for 中的陳述句和普通的沒有區別,else 中的陳述句會在回圈正常執行完(即 for 不是通過 break 跳出而中斷的)的情況下執行,while … else 也是一樣,
for num in range(10,20): # 迭代 10 到 20 之間的數字
for i in range(2,num): # 根據因子迭代
if num%i == 0: # 確定第一個因子
j=num/i # 計算第二個因子
print ('%d 等于 %d * %d' % (num,i,j))
break # 跳出當前回圈
else: # 回圈的 else 部分
print (num, '是一個質數')
while回圈
while回圈和for回圈差不多,不過這里的計數變數要初始化:
栗:
a = 0 #先定義變數a,并賦值
while a < 5: #設定一個放行條件:a要小于5,才能辦事
a = a + 1 # 滿足條件時,就辦事:將a+1
print(a) # 繼續辦事:將a+1的結果列印出來

很明顯,while回圈有2個要點:1.放行條件;2.辦事流程,
和for回圈一樣,冒號和內部代碼的縮進都是必不可少的,
其他
break
我們先來看看break陳述句,break的意思是“打破”,是用來結束回圈的,一般寫作if…break,它的寫法長這樣:
# break陳述句搭配for回圈
for...in...:
...
if ...:
break
# break陳述句搭配while回圈
while...(條件):
...
if ...:
break
在這里,if…break的意思是如果滿足了某一個條件,就提前結束回圈,記住,這個只能在回圈內部使用,
continue
continue的意思是“繼續”,這個子句也是在回圈內部使用的,當某個條件被滿足的時候,觸發continue陳述句,將跳過之后的代碼,直接回到回圈的開始,
# continue陳述句搭配for回圈
for...in...:
...
if ...:
continue
...
# continue陳述句搭配while回圈
while...(條件):
...
if ...:
continue
...

pass
pass陳述句就非常簡單了,它的英文意思是“跳過”,
對比兩種回圈
for回圈和while回圈最大的區別在于【回圈的作業量是否確定】,for回圈就像空房間依次辦理業務,直到把【所有作業做完】才下班,但while回圈就像哨卡放行,【滿足條件就一直作業】,直到不滿足條件就關閉哨卡
練手小專案
接下來,我想先和你談談一個專案一般是怎么完成的,更具體的說,程式員是如何思考和解決問題的呢?
icon
我認為其中一個很重要的能力是【問題拆解】,問題拆解,指的是在做一件事或面對一個問題的時候,將其拆解成多個步驟或多個層次,逐步執行和解決問題,直至達到最終效果,

寫個什么小專案呢?
這樣吧,猜數字游戲都玩過吧,就寫一個猜數字游戲:
功能需求:
實作一個猜數字小游戲,隨機生成一個0~100以內的資料,由玩家來猜,每次猜完之后計算機告訴玩家是猜大了還是猜小了,共5次機會,5次猜不出來宣布游戲失敗,
很簡單吧,
寫好的也可以發在評論區哦
長尾流量優化
建議收藏,不然劃著劃著就找不到了嘞,


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/172403.html
標籤:其他
下一篇:記專業課程設計
