万字【Python基础】保姆式教学,零基础快速入门Python
前言
又是爆肝干文的日子,繼上次說要出一期Python新手入門教程系列文章后,就在不停地整理和碼字,終于是把【基礎(chǔ)入門】這一塊給寫出來了。
高級(jí)編程的【正則表達(dá)式】和【面向?qū)ο缶幊獭績?nèi)容我在之前已經(jīng)出過了,感興趣可以去看看我的專欄,今天的內(nèi)容是【基礎(chǔ)入門】。
【Python新手入門教程專欄】
不積跬步無以至千里,不積小流無以成江海,一個(gè)一個(gè)板塊的知識(shí)積累,早晚你也會(huì)成為你羨慕的那種人,接下來就是正式的內(nèi)容了。
今日內(nèi)容預(yù)覽
文章目錄
-
- 前言
- 今日內(nèi)容預(yù)覽
-
- 一、初識(shí)Python
-
- 1.什么是Python
- 2.Python 的歷史
- 3. Python的特點(diǎn)
- 4.Python 運(yùn)行機(jī)制
- 5.軟件安裝
-
- (1)Python的安裝步驟
- (2)Pycharm
- 6.你的第一行代碼
- 二、基礎(chǔ)知識(shí)
-
-
- 1.輸入輸出
- 2.變量
- 3.數(shù)據(jù)類型
- 4.表達(dá)式
- 5.運(yùn)算符
-
- 三、流程控制
-
-
- 1.條件分支流程
- 2.循環(huán)流程
-
- 四、列表(List)
-
-
- 1.列表的創(chuàng)建
- 2.添加元素
- 3.刪除元素
- 4. 修改元素
- 5.列表高級(jí)特性的
-
- 五、元組(tuple)
-
-
- 1.元組的創(chuàng)建及訪問
- 2.修改和刪除
- 3.元組的操作符
- 4.元組的方法
-
- 六、字符串
-
-
- 1.字符串的特點(diǎn)
- 2.字符串的方法
- 3.格式化輸出
- 4.轉(zhuǎn)義字符
-
- 七、字典(dict)
-
-
- 1.字典的特點(diǎn)
- 2.創(chuàng)建字典
- 3.字典訪問的
- 4.字典的方法
- 5.補(bǔ)充
-
- 八、函數(shù)
-
-
- 1.創(chuàng)建和使用
- 2.函數(shù)的運(yùn)行機(jī)制
- 3.函數(shù)的使用
- 4.函數(shù)的特點(diǎn)
- 5.函數(shù)的參數(shù)
- 6.函數(shù)的文檔
- 7.函數(shù)的返回值
- 8.函數(shù)的變量的作用域
- 9.內(nèi)嵌函數(shù)
- 10.閉包
- 11. lambda表達(dá)式
-
- 九、綜合性練手項(xiàng)目
-
-
- (一)系統(tǒng)需求
- (二)效果預(yù)覽
-
一、初識(shí)Python
1.什么是Python
Python是1門程序設(shè)計(jì)語言。在開發(fā)者眼里,語言可以分為3類:
- 自然語言:人能聽懂的語言,例如漢語,英語,法語等等。
- 機(jī)器語言:機(jī)器能聽懂的語言,機(jī)器只能聽懂0和1。
- 程序設(shè)計(jì)語言:機(jī)器能夠聽懂,人能聽懂的語言,例如Python,C,C++ 、C# 、Java等等。
同樣的,在開發(fā)者眼里還可以分為高級(jí)程序設(shè)計(jì)語言和低級(jí)程序設(shè)計(jì)語言。越接近于人類的語言越高級(jí)
,例如Python;越接近于機(jī)器語言越低級(jí),例如匯編就屬于低級(jí)程序員設(shè)計(jì)語言。
2.Python 的歷史
喝水不忘挖井人,在正式學(xué)習(xí)Python之前我們很有必要了解一下Python的過去和大家的祖師爺。
Python是1989年由Guido van Rossum 在圣誕節(jié)期間創(chuàng)建的,國內(nèi)程序員比較喜歡簡單但的名字,所以
取他名字的前三個(gè)字母gui,人送外號(hào)龜叔。Python名字的由來也是源于龜叔的喜好,因?yàn)楫?dāng)時(shí)的龜叔比較喜歡《蒙提·派森的飛行馬戲團(tuán)》這個(gè)小品,所以就把他創(chuàng)建的這門語言叫做Python。
龜叔今年才65歲,頭發(fā)還是很多的,所以學(xué)Python的小伙伴也不用太擔(dān)心禿頭。龜叔我記得去年時(shí)候還加入了微軟的開發(fā)部,一把年紀(jì)了還在一線寫代碼,著實(shí)讓人佩服。
我私藏了很多技術(shù)干貨,粉絲可白嫖(點(diǎn)這里)
3. Python的特點(diǎn)
Python的特點(diǎn)主要有語法簡潔、類庫強(qiáng)大、膠水語言(調(diào)用其他語言的類庫)、代碼量較少等特點(diǎn),這個(gè)簡單了解一下就可以了,后面用到了你就會(huì)明白的。
(誰用誰知道)
4.Python 運(yùn)行機(jī)制
程序運(yùn)行主要有兩種機(jī)制:編譯型和解釋型。編譯型是將代碼(源文件)通過編譯器,編譯成機(jī)器碼文件,當(dāng)運(yùn)行的時(shí)候直接執(zhí)行機(jī)器碼文件,例如C語言;解釋型是將源文件通過解釋器,逐行進(jìn)行翻譯并運(yùn)行。
Python則屬于解釋型的語言。
編譯型和解釋型語言各有優(yōu)缺點(diǎn):
- 解釋型:
缺點(diǎn):執(zhí)行慢
優(yōu)點(diǎn):可以跨平臺(tái)(操作系統(tǒng))
- 編譯型:
缺點(diǎn):不能跨平臺(tái)
優(yōu)點(diǎn):執(zhí)行快
5.軟件安裝
新手學(xué)Python我建議裝一下Python和Pycharm,在以后寫代碼的時(shí)候會(huì)經(jīng)常用到這兩款軟件,這兩款軟件都可以在官網(wǎng)下載,如果你不想去官網(wǎng)下載,我這邊也有下好的安裝包,自取之后按照安裝流程開始即可。
軟件包下載鏈接:https://pan.baidu.com/s/1BtnMGsfYNFIkmJ26wuGjCw
提取碼:al6e
(1)Python的安裝步驟
Python的安裝可以去官網(wǎng)直接下載,由于是國外的網(wǎng)站,可能響應(yīng)和下載速度都會(huì)有點(diǎn)慢,如果你不著急就等著就行,想快一點(diǎn)的話用迅雷來下載就很快。
- 下載Python
下載地址是 ttps://www.python.org/downloads/ ,也可以從官網(wǎng)點(diǎn)Downloads 進(jìn)入下載頁面,選擇你的電腦對(duì)應(yīng)的版本,我的是Windows電腦,所以就直接點(diǎn)擊 Windows 。
Python目前是出到了3.9.7版本,你可以看到有很多版本的選擇可下載,我用的是3.9.5這個(gè)版本,然后根據(jù)電腦挑選型號(hào),我的電腦是64位的,所以就下載64位的軟件。
- 安裝Python
雙擊下載好的文件,進(jìn)入安裝界面。
選擇自定義安裝,把兩個(gè)選擇都勾選就能將Python安裝到PATH中。
這個(gè)界面不變動(dòng),直接點(diǎn) Next 。
選擇一個(gè)你要安裝的路徑,不然它會(huì)把你裝到C盤,我把它安裝到了D盤,然后點(diǎn)擊 Install 。
安裝完成,點(diǎn)擊 Close 。
- Python測試
測試一下你的Python是否安裝成功,WIN + R 鍵調(diào)出命令窗口,輸入 cmd 。
在黑窗口輸入 Python ,然后回車,如果提示Python 3.9.6 等信息就說明已經(jīng)安裝成功了,如果沒有提示,那就回去看看哪個(gè)環(huán)境你出錯(cuò)了。
(2)Pycharm
Pycharm官網(wǎng)下載,選擇一下系統(tǒng),我是Windows系統(tǒng)所以默認(rèn)不變,然后下載社區(qū)版的就可以了,等你變強(qiáng)大以后再用專業(yè)版的。
下載好之后,雙擊開始安裝。
點(diǎn)擊Next 。
自定義安裝路徑,建議裝在C盤之外的其他盤,點(diǎn)擊 Next 。
全部都勾選。
到了這里之后,默認(rèn)即可,點(diǎn)擊 Install 開始安裝。
等待安裝按成后,點(diǎn)擊finish就裝好了。
我私藏了很多技術(shù)干貨,粉絲可白嫖(點(diǎn)這里)
6.你的第一行代碼
萬事俱備,接下來我們開始寫我們的第一行代碼,鼎鼎大名的 hello world 。
打開Pycharm,點(diǎn)擊New Project 創(chuàng)建新項(xiàng)目,以后新建項(xiàng)目都可以這么操作,中間的Open 是打開項(xiàng)目,如果你有寫好的項(xiàng)目就可以從這里打開。
接下就是設(shè)置一下項(xiàng)目的存在位置,如果你的安裝Pycharm的時(shí)候是按照我的步驟來的,Base interpreter 那里會(huì)自動(dòng)檢測出來Python,可以不做改到,直接點(diǎn)擊左下角的Create 創(chuàng)建就可以了。
然后點(diǎn)擊左邊的。
進(jìn)入頁面會(huì)彈出一個(gè)彈框,點(diǎn)擊Close關(guān)閉就行。
前面我們創(chuàng)建的是項(xiàng)目,是一個(gè)文件夾,來存放源碼的,這里我們開始創(chuàng)建代碼源文件。(我的電腦之前有過一些項(xiàng)目,所以底下有很多文件夾,可能跟你們不太一樣。)
點(diǎn)擊在創(chuàng)建好的項(xiàng)目python_learn,郵件彈出選項(xiàng),選擇New 來新建,選擇Python File ,即創(chuàng)建Python源文件。
然后會(huì)提示你給你的文件取個(gè)名字,然后敲一下回車就完成了代碼源文件的創(chuàng)建了。
開始寫代碼,這里需要用到的1個(gè)最常用的函數(shù)print() ,它是用來專門輸出內(nèi)容的,函數(shù)有它的語法,只要遵循語法來寫代碼,軟件才會(huì)知道你要干什么。
print的語法如下,默認(rèn)自帶換行。
print(要輸出的內(nèi)容)
接下來我們就是要輸出我們第一行代碼了,hello world 是1串字符串,需要加上" "才是正確的格式,不然會(huì)報(bào)錯(cuò),關(guān)于字符串在后面我們會(huì)詳細(xì)來講,這里你只要知道得按照這個(gè)格式寫代碼才能達(dá)到我們想要的結(jié)果。
print("hello world")
寫完代碼之后需要運(yùn)行才出結(jié)果,可以右鍵彈出選項(xiàng)框,選擇 Run’learn_1’ 開始運(yùn)行,Run是運(yùn)行的意思,learn_1 是剛才我給這個(gè)源文件取的名字。
除了右鍵來運(yùn)行,還可以直接用快捷鍵 Ctrl+Shift+F10,執(zhí)行結(jié)果:
恭喜你,輸出了你的第一行代碼,正式開始Python之旅!
二、基礎(chǔ)知識(shí)
在用Python寫代碼的之前,對(duì)Python的基礎(chǔ)知識(shí)是必須要會(huì)的,不然你可能會(huì)寸步難行。基礎(chǔ)知識(shí)包括輸入輸出、變量、數(shù)據(jù)類型、表達(dá)式、運(yùn)算符這5個(gè)方面。
1.輸入輸出
Python有很多函數(shù),后面我們會(huì)細(xì)講,但這里先將兩個(gè)最基本的函數(shù):輸入和輸出。
輸出函數(shù)print(),在前面我們已經(jīng)用過了,語法就是:
print(要輸出的內(nèi)容)
輸入函數(shù)是 input(),功能是接收用戶輸入的內(nèi)容,語法是:
input(輸出的內(nèi)容)
舉例:接收用戶輸入的密碼并打印
n = input("請(qǐng)輸入密碼:") #把輸入內(nèi)容賦給n,用 n 接收一下
print(n) #打印n
在Python里,“#” 表示注釋,“#”后面的東西不會(huì)被執(zhí)行。代碼運(yùn)行之后首先出現(xiàn)了“請(qǐng)輸入密碼:”,然后隨意輸入,比如輸入123,執(zhí)行結(jié)果:
提示信息
請(qǐng)輸入密碼:123
123
成功接收用戶輸入的內(nèi)容并打印出來。
2.變量
變量就是一個(gè)名字,需要先賦值在使用,變量要符合標(biāo)識(shí)符(名字)的命名規(guī)范,這是硬性要求,標(biāo)識(shí)符相當(dāng)于名字,包括變量名、函數(shù)名、類名等等,
- 標(biāo)識(shí)符的命名規(guī)范
- 合法的標(biāo)識(shí)符:字母,數(shù)字(不能開頭),下劃線,py3可以用中文(不建議),py2不可以。
- 大小寫敏感。
- 不能使用關(guān)鍵字和保留字。
關(guān)鍵字: if while for as import
保留字:input,print range
- 沒有長度限制。
- 望文生義,看到名字就知道要表達(dá)的意思。
- 大小寫:
1. 包名:全小寫,例如 time ;2. 類名:每個(gè)單詞的首字母大寫,其他的小寫,簡稱大駝峰命名,例如 HelloWorld ;3. 變量名/函數(shù)名:第一個(gè)單詞的首字母小寫,后面的單詞的首字母大寫,簡稱小駝峰命名,例如 helloWorld ;4. 常量:全大寫,例如 HELLO 。
- 其他命名方式,比如 hello_world 。
3.數(shù)據(jù)類型
- 數(shù)據(jù)類型分類
數(shù)據(jù)類型可分為以下6類:
(1) 整型:整數(shù),英文名 int ,例如 5 的數(shù)據(jù)類型就是整型。
(2) 浮點(diǎn)型:小數(shù),英文名 float ,例如 0.5 就是1個(gè)浮點(diǎn)型數(shù)據(jù)。科學(xué)計(jì)數(shù)法,e表示乘以10幾次方,例如 b=1e10 表示1*10的10次方。
(3) 字符串:英文str表現(xiàn)形式有4種:'xs' 、 "xs" 、 """xsxs""" 、 ''''xxx''' 三引號(hào)有個(gè)特殊功能,表示注釋,跟 # 一樣的功能,例如:
"""
xsx
xs
這里面的都是注釋內(nèi)容
"""
(4)布爾類型:英文bool,True為真,False為假;1表示真,0表示假。
(5)None 是一個(gè)單獨(dú)的數(shù)據(jù)類型。
(6)列表、元組、字典、集合也是常見的數(shù)據(jù)類型。
- 類型轉(zhuǎn)換
在寫代碼的時(shí)候我們經(jīng)常需要將不同的數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換,主要的數(shù)據(jù)類型轉(zhuǎn)換方法如下:
(1) 字符串轉(zhuǎn)整型
方法是 int(str) ,字符串必須是數(shù)字,例如:
user = int('304200780')
print(user)
執(zhí)行結(jié)果:
304200780
(2)浮點(diǎn)型轉(zhuǎn)整型
方法是 int(float) ,例如:
f = 20.1
ff = int(f) #直接抹去小數(shù)部分
print(ff)
運(yùn)行結(jié)果:
20
(3)字符串轉(zhuǎn)浮點(diǎn)型
方法是 float(str) ,字符串必須是數(shù)字和,例如:
f = "203.4"
ff = float(f)
print(ff)
運(yùn)行結(jié)果:
203.4
(4)整型轉(zhuǎn)浮點(diǎn)型
方法是 float(int) ,例如:
f = 30
ff = float(f) # 30.0
print(ff)
運(yùn)行結(jié)果:
30.0
(5)浮點(diǎn)型轉(zhuǎn)字符串
方法是 str(float) ,例如:
f = 30.5
ff = str(f)
print(type(ff).__name__) #type()是獲取數(shù)據(jù)類型函數(shù)
這里先不管print()和type()函數(shù)的嵌套,后面會(huì)將,只要知道它們是在輸出 ff 的數(shù)據(jù)類型,運(yùn)行結(jié)果:
str
(6)整型轉(zhuǎn)字符串
方法是 str(int) ,例如:
f = 30
ff = str(f)
print(type(ff).__name__) #type()是獲取數(shù)據(jù)類型函數(shù)
- 獲取類型信息
常用的獲取數(shù)據(jù)類型信息的函數(shù)有type()和isinstance()兩個(gè)。
(1)type()
語法是 type(對(duì)象) ,返回的是對(duì)象的類型,前面我們也有用過,但是它是在內(nèi)部返回的,如果你不輸出它你是看不到的,所以經(jīng)常會(huì)和輸出函數(shù)print()嵌套使用。
例子:獲取數(shù)據(jù)類型并輸出。
f = 30
print(type(f))
運(yùn)行結(jié)果:
<class 'int'>
class的意思是種類,可以看出 f 是 int 型的數(shù)據(jù)。
(2)isinstance()
isinstance() 常用來判斷數(shù)據(jù)類型,它返回的是布爾值(True或False),語法是 isinstance(對(duì)象,class) 。
例子:判斷30.5是不是整型。
f = 30.5
n = isinstance(f,int) #用n來接收一下結(jié)果
print(n)
運(yùn)行結(jié)果:
False
4.表達(dá)式
在Python當(dāng)中,表達(dá)式是由數(shù)字、算符、數(shù)字分組符號(hào)(括號(hào))、變量等對(duì)象的組合叫做表達(dá)式,表達(dá)式均有固定字面值,例如 “10+20”這個(gè)表達(dá)式的值為30,表達(dá)式 “10>30” 的值為 False 。
5.運(yùn)算符
運(yùn)算符可以分為很多4類。
(1)一般運(yùn)算符
+,-,*,/(真除法),//(地板除,舍去小數(shù)部分),%(取余數(shù)),**(冪運(yùn)算)
(2) 賦值運(yùn)算符
常用賦值運(yùn)算符是 = ,等號(hào)右邊的值賦值等號(hào)左邊
增強(qiáng)賦值運(yùn)算符:+=,-=,*=,/=,%=,**=
例子:
a = 30
a+=10
print(a)
執(zhí)行結(jié)果:
40
連續(xù)賦值:a=b=c=d=10
(3)布爾運(yùn)算法
== (等于),!=(不等于) >= <= > <
(4) 邏輯運(yùn)算符
主要有not、and和or三類,又稱非、與和或
and:前后都為真則為真
or:有一個(gè)為真則為真
not:非真,非假
例子:
a = 10
b = 20
c = 30
d = 40
n1 = a > b and a < c #a>b為假,a<c為真,假與真為假
n2 = not a < c #a<c為真,非真則為假
n3 = a > b or a < c #a>b為假,a<c為真,假或真為真
print(n1,n2,n3)
執(zhí)行結(jié)果:
False False True
我私藏了很多技術(shù)干貨,粉絲可白嫖(點(diǎn)這里)
三、流程控制
流程控制常用的是條件分支流程的if/else語句和循環(huán)控制的while語句。
1.條件分支流程
當(dāng)達(dá)到某種條件的時(shí)候才會(huì)觸發(fā)的代碼。
(1)語法1
if 布爾表達(dá)式: #如果為真則執(zhí)行內(nèi)部的代碼塊代碼塊
布爾表達(dá)式的結(jié)果只有兩個(gè),要么真,要么假,如果是真的,那么就執(zhí)行if語句里面的代碼塊,否則就跳過不執(zhí)行。
例子:
a = 10
b = 20
if a < b:print("真的")
if a > b:print("假的")
執(zhí)行結(jié)果:
真的
從這里可以看出第一個(gè)if語句里面的布爾表達(dá)式(a<b)為真,所以執(zhí)行了里面的代碼塊print(“真的”),而第二個(gè)if語句里面的布爾表達(dá)式(a>b)是假的,所以里面的代碼塊沒有被執(zhí)行,所以不輸出“假的”兩字。
(2)語法2
常用的if/else語句,語法如下:
if 布爾表達(dá)式:代碼塊
else:代碼塊
判斷的邏輯是如果布爾表達(dá)式為真,則執(zhí)行if內(nèi)部的代碼塊,如果為假則執(zhí)行else內(nèi)部的代碼。
例子:
a = 10
b = 20
if a > b:a = 30print(a)else:print(1111)
執(zhí)行結(jié)果:
1111
(3)語法3
if 布爾表達(dá)式1:代碼塊
elif 布爾表達(dá)式2:代碼塊
elif 布爾表達(dá)式3:代碼塊
....
else:代碼塊
邏輯是如果布爾表達(dá)式為真,則執(zhí)行if內(nèi)部的代碼塊,如果為假則執(zhí)行else內(nèi)部的代碼,這個(gè)語法適用于多個(gè)連續(xù)條件判斷。
例子:
s = int(input("請(qǐng)輸入分?jǐn)?shù):"))if 80 >= s >= 60:print("及格")
elif 80 < s <= 90:print("優(yōu)秀")elif 90 < s <= 100:print("非常優(yōu)秀")else:print("不及格")
隨意輸入100以內(nèi)的數(shù)字,不同區(qū)間內(nèi)的數(shù)字結(jié)果是不一樣的,例如92,執(zhí)行結(jié)果為:
請(qǐng)輸入分?jǐn)?shù):92
非常優(yōu)秀
10
(4)語法4
這里可以將前面所講的if/elif/else進(jìn)行嵌套使用,來達(dá)到我們想要的目的。
例子
s = int(input("請(qǐng)輸入分?jǐn)?shù):"))
if 80 >= s >= 60:print("及格")
elif 80 < s <= 90:print("優(yōu)秀")
elif 90 < s <= 100:print("非常優(yōu)秀")
else:print("不及格")if s > 50:print("你的分?jǐn)?shù)在60分左右")else:print("你的分?jǐn)?shù)低于50分")
隨意輸入數(shù)字,比如說55,執(zhí)行結(jié)果:
請(qǐng)輸入分?jǐn)?shù):55
不及格
你的分?jǐn)?shù)在60分左右
2.循環(huán)流程
在前面我們講過的流程控制語句的功能還是比較有限,比如說只能執(zhí)行1次,要執(zhí)行多次就得多寫幾個(gè),有點(diǎn)麻煩,所以我們需要學(xué)習(xí)循環(huán)流程里面的循環(huán)語句,它的作用就是重復(fù)運(yùn)行某些代碼。
(1)while循環(huán)
語法:
while 布爾表達(dá)式: 代碼塊
只要條件(布爾表達(dá)式)為真就執(zhí)行里面的代碼塊。
舉例:
while 4 < 5:s = int(input("請(qǐng)輸入分?jǐn)?shù):"))if 80 >= s >= 60:print("及格")elif 80 < s <= 90:print("優(yōu)秀")elif 90 < s <= 100:print("非常優(yōu)秀")else:print("不及格")if s > 50:print("你的分?jǐn)?shù)在60分左右")else:print("你的分?jǐn)?shù)低于50分")
運(yùn)行之后可以多次輸入分?jǐn)?shù),并且永不停息:
請(qǐng)輸入分?jǐn)?shù):56
不及格
你的分?jǐn)?shù)在60分左右
請(qǐng)輸入分?jǐn)?shù):70
及格
請(qǐng)輸入分?jǐn)?shù):
當(dāng)然這里有1個(gè)弊端,代碼執(zhí)行后陷入了死循環(huán),while里面的代碼被一直執(zhí)行,因?yàn)?<5永遠(yuǎn)為真。
所以這里我們可以改善一下代碼,不讓它永遠(yuǎn)執(zhí)行,讓它循環(huán)執(zhí)行幾次就可以了,這里可以用個(gè)變量來作為條件判斷,把4<5改成a<5,同時(shí)讓在while里面實(shí)現(xiàn)自加的功能,在while里面代碼每執(zhí)行1次,執(zhí)行到它那行的時(shí)候它加1,這樣執(zhí)行2次while就會(huì)跳出來。
a = 3
while a < 5:s = int(input("請(qǐng)輸入分?jǐn)?shù):"))if 80 >= s >= 60:print("及格")elif 80 < s <= 90:print("優(yōu)秀")elif 90 < s <= 100:print("非常優(yōu)秀")else:print("不及格")if s > 50:print("你的分?jǐn)?shù)在60分左右")else:print("你的分?jǐn)?shù)低于50分")a += 1
print(a)
print("while執(zhí)行結(jié)束了")
執(zhí)行結(jié)果:
請(qǐng)輸入分?jǐn)?shù):55
不及格
你的分?jǐn)?shù)在60分左右
請(qǐng)輸入分?jǐn)?shù):65
及格
5
while執(zhí)行結(jié)束了
這里我再給大家舉個(gè)例子來理解while循環(huán)的運(yùn)用。比如說輸入一個(gè)整數(shù)并計(jì)算各個(gè)位和,例如輸入321,那么各個(gè)位之和則為6。
# 請(qǐng)輸入一個(gè)整數(shù),并計(jì)算各個(gè)位和 如:321=6n = int(input("請(qǐng)輸入一個(gè)整數(shù):")) # 將字符串轉(zhuǎn)為整型# sums累加器:m=10 m=10+5sums = 0while n != 0: # 32 #3sums = sums + n % 10 # sums=1+2=3+3=6n = n // 10 # 32
print(sums)
我輸入的2345,執(zhí)行結(jié)果:
請(qǐng)輸入一個(gè)整數(shù):2345
14
(2)for循環(huán)
for循環(huán)和while循環(huán)都是循環(huán)語句,但不一樣的點(diǎn)在于for循環(huán)是技術(shù)循環(huán)。
語法:
l=[3,2,1]
for 變量 in 可迭代對(duì)象:代碼塊
例子:
l=[3,2,1]
for n in l:print("1")
執(zhí)行:
1
1
1
l是個(gè)列表,后面我們會(huì)講,列表里面有3個(gè)元素,每執(zhí)行一次for循環(huán),列表里面的元素就會(huì)被賦值給n,直到列表里面沒有了元素可賦值,則n就跳出了列表,此時(shí)的for循環(huán)就不成立了,不執(zhí)行for里面的代碼塊。
(3)range
for循環(huán)經(jīng)常會(huì)搭配range來使用,range是一個(gè)可迭代對(duì)象,range的語法如下:
range(start=0,stop,step=1)
start值的是開始下標(biāo)。range序列里面的所有元素都有下標(biāo),第一個(gè)元素的下標(biāo)是0,所以,默認(rèn)是從0開始。
stop是結(jié)束位置。結(jié)束的位置下標(biāo)為(元素個(gè)數(shù)-1),例如range里面有4個(gè)元素,那么結(jié)束下標(biāo)最大為3,大于3則跳出range。
step是步長,如果step是2,那么每次會(huì)隔開1個(gè)元素,默認(rèn)步長為1,即每個(gè)元素都會(huì)取到。
舉例:
for i in range(8): #可以不寫star和step,但結(jié)束位置一定要寫的print(i)
print("---------")
for i in range(10, 2, -2):print(i)
執(zhí)行結(jié)果:
0
1
2
3
4
5
6
7
---------
10
8
6
4
通過第一個(gè)for循環(huán)可以看出,range()的第一個(gè)元素的下標(biāo)是從0開始,而不是從1開始;range()可以不寫開始下標(biāo)和步長,但一定得有結(jié)束位置;第二個(gè)for循環(huán)可以看出步長可以為負(fù)數(shù),用于遞減。
(4)continue
continue的作用是跳過本次循環(huán),后面的循環(huán)繼續(xù)執(zhí)行,例如:
for i in range(1, 10):if i == 5:continueprint(i)
執(zhí)行結(jié)果:
1
2
3
4
6
7
8
9
很明顯,i等于5的時(shí)候,for循環(huán)就跳過去了,本次不再執(zhí)行里面的代碼,重新回到了新的循環(huán)。
同樣的,還有終止所有循環(huán)的功能,就是break,和continue是一樣的用法,但效果是不一樣的,我這里就不做舉例了,大家可以去試一下就知道了。
四、列表(List)
列表是可以存放任何數(shù)據(jù),包括整型,浮點(diǎn)型,字符串,布爾型等等,是常用的數(shù)據(jù)類型之一。
1.列表的創(chuàng)建
列表也是一個(gè)可迭代對(duì)象
1. 普通形式l = [1,2,3,4,5] ---整型列表l = ["a","b","c"] ---字符串列表l = [True,False,1>2,5<6]---布爾列表
2. 混合列表l = [1,2.5,"a",True]
3. 空列表l = []
- 從列表中如何獲取數(shù)據(jù)(元素)
列表是有下標(biāo)的,并且下標(biāo)從0開始,元素是指列表中每個(gè)數(shù)據(jù),例如l = [5,4,3,2,1] 里面有5個(gè)元素,但5的下標(biāo)為0,1的下標(biāo)為4。
1.獲取當(dāng)個(gè)數(shù)據(jù)(元素)語法:變量[下標(biāo)] #獲取下標(biāo)所對(duì)應(yīng)的值
例如獲取l列表中下標(biāo)為1的元素:
l = [1, 2, 3] # 下標(biāo)/索引:0開始
print(l[1])
執(zhí)行結(jié)果為:
2
2. 列表的遍歷
列表的遍歷是把列表里面的所有元素都獲取1遍。
例如把[1,2,3,4,5]里面的元素都獲取并輸出一遍:
l = [1,2,3,4,5]
for i in l:print(i, end=" ")
執(zhí)行結(jié)果為:
1 2 3 4 5
3. 交換數(shù)據(jù)
對(duì)指定下標(biāo)的元素進(jìn)行數(shù)據(jù)交換。
例如把[1, 2, 3, 4, 5]里面的下標(biāo)為第2和第3的元素進(jìn)行數(shù)據(jù)交換:
l = [1, 2, 3, 4, 5] # 下標(biāo)/索引:0開始
l[2], l[3] = l[3], l[2]
print(l)
執(zhí)行結(jié)果:
[1, 2, 4, 3, 5]
2.添加元素
添加元素的方法常用的有以下3個(gè):
統(tǒng)一用法是:
變量.函數(shù)
#例如 n. append(對(duì)象)
例子:講列表[6,7]添加到另一個(gè)列表[1,2,3,4,5]中
l = [1, 2, 3, 4, 5]
l.extend([6, 7])
print(l)
執(zhí)行結(jié)果:
[1, 2, 3, 4, 5, 6, 7]
3.刪除元素
刪除列表中的元素的常用方法主要有:
例子:刪除列表[1, 2, 3, 4, 5]中4這個(gè)元素。
l = [1, 2, 3, 4, 5]
l.remove(4)
print(l)
執(zhí)行結(jié)果為:
[1, 2, 3, 5]
4. 修改元素
修改列表中的元素方法其實(shí)很簡單,直接用這個(gè)方式就可以了:
變量[下標(biāo)]=新值
例如:
l = [1, 2, 3, 4, 5]
l[2]=6
print(l)
執(zhí)行結(jié)果:
[1, 2, 6, 4, 5]
5.列表高級(jí)特性的
- 切片操作
切片,顧名思義就是把1個(gè)列表切分為多個(gè)列表,語法如下:
變量[起始下標(biāo):結(jié)束下標(biāo)] #結(jié)束下標(biāo)取不到
例如
l = [1, 2, 3, 4, 5]
print(l[0:4])
執(zhí)行結(jié)果:
[1, 2, 3, 4]
做切片操作時(shí)要注意以下幾個(gè)點(diǎn):
①如果下標(biāo)從0開始可以省略不寫,例如 n = l[:4]
②如果結(jié)束下標(biāo)取的是最后一個(gè)元素,可以省略不寫,例如 n = l[3:]
③如果列表中的元素都要,開始和結(jié)束下標(biāo)都可以省略,例如 n = l[:]
④n = l[:-1] 表示從0開始 - 到數(shù)二個(gè)元素
- 列表的進(jìn)階操作
方法是 n = l[開始:結(jié)束:步長] ,這個(gè)方法既可以正向去操作列表,也可以反向去操作列表,例如:
l = [1, 2, 3, 4, 5]
n = l[-1:-3:-1]
print(n)
執(zhí)行結(jié)果:
[5, 4]
- 列表的一些操作符
- 比較運(yùn)算符
列表之間進(jìn)行比較,以相同下標(biāo)進(jìn)行比較,從小到大進(jìn)行比較,如果值相同則比較下一組元素,如果不同直接出結(jié)果,例如:
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 下標(biāo)/索引:0開始
l2 = [2, 3, 4, 6]
print(l < l2) # True
執(zhí)行結(jié)果:
True
- 邏輯運(yùn)算符
邏輯運(yùn)算符and not or 跟比較運(yùn)算符相似,返回結(jié)果都是布爾值(True/False),這里可以去自己嘗試一下。
- 拼接運(yùn)算符
拼接運(yùn)算符是 + ,常用來進(jìn)行兩個(gè)列表拼接,例如:
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 下標(biāo)/索引:0開始
l2 = [2, 3, 4, 6]
print(l + l2)
執(zhí)行結(jié)果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 4, 6]
- 重復(fù)操作符
重復(fù)操作符為 * ,后面常跟數(shù)字,表示將列表里面的元素重復(fù)復(fù)制幾遍,例如:
l2 = [2, 3, 4, 6]
print(l2*2)
執(zhí)行結(jié)果:
[2, 3, 4, 6, 2, 3, 4, 6]
- 成員關(guān)系操作符
成員關(guān)系操作符主要有 in和not in,用來判斷元素是否在列表中,返回結(jié)果是布爾值,例如:
l = [2, 3, 4, 6]
print(5 not in l) #輸出“5不在列表l中”這句話的真假
執(zhí)行結(jié)果:
True
- 列表的其他方法
列表常用的其他方法還有以下幾個(gè):
例如:將列表里面的所有元素進(jìn)行翻轉(zhuǎn)
l = [2, 3, 4, 6]
l.reverse()
print(l)
執(zhí)行結(jié)果:
[6, 4, 3, 2]
- 冒泡排序法
冒泡排序是列表里面比較有名的排序方法之一,例如將列表[5,4,3,2,1]里面的所有元素用冒泡排序的思想進(jìn)行從小到大排序。
l = [6, 5, 4, 3, 2, 1]
for i in range(1, len(l)): # 1,5 #循環(huán)4大次 4for j in range(len(l) - i):if l[j] > l[j + 1]:l[j], l[j + 1] = l[j + 1], l[j]print(l)
執(zhí)行結(jié)果:
[1, 2, 3, 4, 5, 6]
- 選擇排序
選擇排序是讓列表中的元素,固定一個(gè)元素和其他元素進(jìn)行比較,不符合條件互換位置。
l = [6, 5, 4, 3, 2, 1]
for i in range(0, len(l) - 1): # 0,4for j in range(i + 1, len(l)): # 1,5if l[i] > l[j]:l[i], l[j] = l[j], l[i]print(l)
執(zhí)行結(jié)果:
[1, 2, 3, 4, 5, 6]
- 二維列表
列表里面還能存放多個(gè)列表,由比如列表 [[1,2,3],[4,5,6],[7,8,9]] ,它是由兩個(gè)維度的列表組成,1個(gè)維度是它本身,另一個(gè)維度是[1,2,3],[4,5,6],[7,8,9] 這三個(gè)列表,所以構(gòu)成了二位列表。
對(duì)于二位列表,語法是:
變量[外層列表下標(biāo)][內(nèi)層列表的下標(biāo)]
例如輸出二位列表中的第一個(gè)列表里面的下標(biāo)為1的元素:
l = [[1,2,3],[4,5,6],[7,8,9]]
print(l[0][1]) #2
執(zhí)行結(jié)果為:
2
在這里我們可以看得出來,二位列表里面的外層列表也有下標(biāo),下標(biāo)也是從開始。
我們?cè)賮韺?duì)二位列表進(jìn)行遍歷:
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i in l:for j in i:print(j)
執(zhí)行結(jié)果:
1
2
3
4
5
6
7
8
9
粉絲福利,點(diǎn)擊可查看
五、元組(tuple)
元祖也是Python中常見的數(shù)據(jù)類型之一,它可以用來存放任何數(shù)據(jù)類型,但它也有它的特點(diǎn):
1. 不能修改,不可變類型
2. 用()的形式
3. 元組也是可迭代對(duì)象
4. 元組是有序的,下標(biāo)操作,支持切面操作[:]
1.元組的創(chuàng)建及訪問
1. 創(chuàng)建:直接創(chuàng)建,例如 t = (1,2,3,4,5)
2. 訪問:t[下標(biāo)] #獲取元素
3. 切片操作:t[:] 返回元組
例子創(chuàng)建元組并對(duì)元組進(jìn)行元素訪問和切片操作:
t = (1, 2, 3, 4, 5)
print(t[2]) #輸出下標(biāo)為2的元組元素
n = t[2:4] #切片,范圍是下標(biāo)2~4
print(n)
執(zhí)行結(jié)果為:
3
(3, 4)
2.修改和刪除
前面有說過元組是不可變類型,不能修改,但是可以通過將元組轉(zhuǎn)換成列表的形式進(jìn)行修改和刪除等操作,最后再將列表轉(zhuǎn)換成元組,完成元組的修改和刪除。
例如:修改元組中的元素
t = (1, 2, 3, 4, 5)
l = list(t) #將元組轉(zhuǎn)換成列表
print(l) #輸出列表
l[2] = 6 #列表指定元素的修改
print(l) #輸出新列表
t = tuple(l) #列表轉(zhuǎn)換成元組
print(t)
執(zhí)行結(jié)果:
[1, 2, 3, 4, 5]
[1, 2, 6, 4, 5]
(1, 2, 6, 4, 5)
刪除元組中的元素可用 del t[下標(biāo)] 方法,前提還是一樣的先將元組轉(zhuǎn)換成列表,例如:
t = (1, 2, 3, 4, 5)
l = list(t) #將元組轉(zhuǎn)換成列表
print(l) #輸出列表
del l[2] #列表指定元素的刪除
print(l) #輸出新列表
t = tuple(l) #列表轉(zhuǎn)換成元組
print(t)
執(zhí)行結(jié)果:
[1, 2, 3, 4, 5]
[1, 2, 4, 5]
(1, 2, 4, 5)
3.元組的操作符
元組同樣也有著操作符,方法跟列表的操作符是一樣的。
1. 比較運(yùn)算符< > >= <= == !=
2. 邏輯運(yùn)算符 and not or
3. 拼接運(yùn)算符+
4. 重復(fù)操作符*
5. 成員關(guān)系操作符in not in判斷元素是否在列表中print(5 not in l)
例子:判斷5在不在元組里面。
t = (1, 2, 3, 4, 5)
print(5 not in t) #5不在元組里面
執(zhí)行結(jié)果:
False
4.元組的方法
元組的方法和前面所介紹的列表的方法是一樣的,這里給大家回顧一下列表的常用方法:
這些方法的使用還是遵循列表的方法時(shí)所講的 變量名.方法 。除了上面的這些,還有2個(gè)方法值得新增:
1. count(value)
統(tǒng)計(jì)某個(gè)值出現(xiàn)的次數(shù),value是指定的值2. index(value,[start],[stop])
返回value在元組中出現(xiàn)的下標(biāo)位置(第一次出現(xiàn)的下標(biāo))
例子:統(tǒng)計(jì)3在元組(1,2,3,4,5,3)中第一次出現(xiàn)的下標(biāo)。
t = (1, 2, 3, 4, 5,3)
l1 = t.index(3, 0, 6)
print(l1)
執(zhí)行結(jié)果:
2
六、字符串
在Python中,字符和字符串沒有區(qū)別。可能有些同學(xué)學(xué)過其他的語言,例如Java,在Java中,單引號(hào)’a’表示字符’a’,雙引號(hào)"abc"表示字符串"abc",但在Python當(dāng)中,它們沒有區(qū)別,都統(tǒng)稱字符串。
1.字符串的特點(diǎn)
字符串擁有以下特點(diǎn):
1. 字符串不可變類型
2. 字符串是可迭代對(duì)象
3. 字符串支持索引和切片操作
4. 支持操作符;拼接:+重復(fù)操作符:*比較運(yùn)算符: > < <= >= == !=邏輯運(yùn)算符:not and or成員關(guān)系: in not in
2.字符串的方法
字符串的常用方法有以下這些:
例子:將字符串 “hello world” 的第一個(gè)字母大寫。
a = "hello world"
b = a.capitalize()
print(b)
執(zhí)行結(jié)果:
Hello world
3.格式化輸出
格式化輸出是指將字符串按照某種格式進(jìn)行輸出,常用的方法有 format 和 $% 。
1. format 語法1:用數(shù)字占位(下標(biāo))
例子:
"{0} 嘿嘿".format("Python")
a = 100
s = "{0}{1}{2} 嘿嘿"
s2 = s.format(a, "JAVA", "C++")
print(s2)
2.format 語法2:{} 占位
例子:
a = 100
s = "{}{}{} 嘿嘿"
s2 = s.format(a, "JAVA", "C++", "C# ")
print(s2)
執(zhí)行結(jié)果:
100JAVAC++ 嘿嘿
3.format 語法3:{} 占位用字母占位
例子:
s = "{a}{b}{c} 嘿嘿"
s2 = s.format(b="JAVA", a="C++", c="C# ")
print(s2)
執(zhí)行結(jié)果:
C++JAVAC# 嘿嘿
4.%s
語法為 “%s”%(值) ,最常用的參數(shù)可以是任意值。
例子:用%s 結(jié)合循環(huán)語句輸出九九乘法表
for i in range(1, 10):for j in range(1, i + 1):print("%s * %s = %s" % (i, j, i * j), end="\t")print()
執(zhí)行結(jié)果:
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
4.轉(zhuǎn)義字符
1. “\n” :換行符
2. “\'”:單引號(hào)
3. “\“”:雙引號(hào)
4. "\\" : \
在這里值得注意的是 \ ,它有很多比較巧的運(yùn)用,比如說當(dāng)你在同一行要寫的東西比較多的時(shí)候,視覺上不是很好看,可以用反斜杠來進(jìn)行視覺上的換行,但上一行和下一行在邏輯上是一樣的,例如:
a = "sxsxsxsxsxsxsxs\xsxsxsxs\xsx"
print(a)a = 1 + 2 + 3 \+ 4
print(a)
執(zhí)行結(jié)果:
sxsxsxsxsxsxsxs xsxsxsxs xsx
10
粉絲福利,點(diǎn)擊可查看
七、字典(dict)
字典是用來存儲(chǔ)數(shù)據(jù)的,字典中的數(shù)據(jù)以映射關(guān)系存儲(chǔ)。
1.字典的特點(diǎn)
1. 字典是Python中唯一的映射類型
2. 字典是無序的
3. 字典是可迭代對(duì)象
4. 字典的構(gòu)成鍵:key值:value映射:鍵映射值鍵-值:鍵值對(duì),又叫 項(xiàng)
2.創(chuàng)建字典
1. 直接創(chuàng)建語法: d = {} #空字典例如: d = {"name":"不良人","apple":"蘋果"}
2. dict()例如:d = dict() #空字典
3. dict(可迭代對(duì)象)
例如:
d3 = dict([("one",1),("two",2)])print(d3)
執(zhí)行結(jié)果:
{'one': 1, 'two': 2}
這就是一個(gè)元組,one是鍵,1是值, ‘one’ : 1 是鍵值對(duì)。
4. dict(**kwargs)
例如:
d4 = dict(a=3, b=4)
print(d4)
執(zhí)行結(jié)果:
{'a': 3, 'b': 4}
3.字典訪問的
1. 基本形式:變量名[鍵名] #鍵所對(duì)應(yīng)的值
例如:
d = {"name": "小黑"}
print(d["name"])
執(zhí)行結(jié)果:
小黑
2. 添加一個(gè)鍵值對(duì)變量名[鍵名]=值
3. 修改一個(gè)鍵值對(duì)的值變量名[鍵名]=值
4.字典的方法
字典常用的方法主要有以上一些:
例子:返回指定字典中的所有值
d2 = {'c': 3, 'hehe': 100, 'b': 2, 'a': 1}
c = d2.values()
print(list(c))
執(zhí)行結(jié)果:
[3, 100, 2, 1]
5.補(bǔ)充
關(guān)于字典,有一些小點(diǎn)給大家做個(gè)補(bǔ)充:
1. 字典可以使用for循環(huán)for i in d2:print(i) #鍵,不包含值
2. 輸出一個(gè)鍵值對(duì)for i in d2.items():print(i)
3. 成員關(guān)系操作符in/not in只能查詢鍵
八、函數(shù)
函數(shù)是由一組代碼組成,完成某個(gè)特定的功能。
1.創(chuàng)建和使用
創(chuàng)建函數(shù)的語法如下:
def 函數(shù)名(參數(shù)): 代碼塊(函數(shù)的實(shí)現(xiàn)/函數(shù)體)
參數(shù)相當(dāng)于變量,參數(shù)可以為1個(gè)或者多個(gè),用逗號(hào)隔開,還可以沒有參數(shù),等于無參;代碼塊是函數(shù)的實(shí)現(xiàn),又叫函數(shù)體。
函數(shù)的調(diào)用
函數(shù)名(參數(shù))
2.函數(shù)的運(yùn)行機(jī)制
函數(shù)的運(yùn)行遵循以下機(jī)制:
1. 從函數(shù)調(diào)用開始執(zhí)行
2. 通過函數(shù)名字找到函數(shù)定義的位置(創(chuàng)建函數(shù)的位置)
3. 執(zhí)行函數(shù)體
4. 執(zhí)行完畢之后,返回到函數(shù)的調(diào)用處
3.函數(shù)的使用
舉例:用函數(shù)對(duì)古詩《登鸛雀樓》進(jìn)行逐行打印,并對(duì)每一行下面增加由多個(gè)相同符號(hào)組成的分割線。
def fun2(a, n):print(a * n)# 打印古詩
print("白日依山盡")
fun2("+", 5)
print("黃河入海流")
fun2("-", 10)
print("欲窮千里目")
fun2("*", 15)
print("更上一層樓")
fun2("/", 20)
執(zhí)行結(jié)果:
白日依山盡
+++++
黃河入海流
----------
欲窮千里目
***************
更上一層樓
////////////////////
4.函數(shù)的特點(diǎn)
通過上面的例子可以發(fā)現(xiàn),函數(shù)具有以下特點(diǎn):
1. 避免了代碼的冗余
2. 提高了代碼的可維護(hù)性
3. 提高了代碼的可重用性
4. 提高了代碼的靈活性
5.函數(shù)的參數(shù)
函數(shù)的參數(shù)首先要明白以下三個(gè)概念:
1. 形式參數(shù):形參在定義函數(shù)的時(shí)候傳遞的參數(shù)
2. 實(shí)際參數(shù):實(shí)參 在調(diào)用函數(shù)時(shí)傳遞的參數(shù)
3. 無參沒有任何參數(shù)
位置參數(shù):實(shí)參的位置和形參一一對(duì)應(yīng),不能多也不能少。
關(guān)鍵字參數(shù):用形參的名字作為關(guān)鍵字來指定具體傳遞的值,則在函數(shù)調(diào)用時(shí),前后順序?qū)⒉皇苡绊憽?
位置參數(shù)和關(guān)鍵字參數(shù)混用:當(dāng)位置參數(shù)和關(guān)鍵字參數(shù)混用時(shí),位置參數(shù)在前
默認(rèn)參數(shù):給了默認(rèn)值的參數(shù)--形參如果傳遞了新的值,那么默認(rèn)值就被覆蓋了
可變成參數(shù):def 函數(shù)名(*a)本質(zhì)上封裝成了元組
可變成參數(shù):def 函數(shù)名(**kwargs)將參數(shù)封裝成了字典
可變成參數(shù)和位置參數(shù)混用的時(shí)候:可變參數(shù)優(yōu)先
6.函數(shù)的文檔
寫代碼的時(shí)候我們經(jīng)常需要寫文檔,前面有提過#和三引號(hào)可以進(jìn)行代碼的注釋,但在這里要介紹一種新的方法,也是寫代碼時(shí)常用的函數(shù)文檔書寫格式:在函數(shù)體的第一行用 “”" “”" 進(jìn)行文檔說明,這是標(biāo)準(zhǔn)化的函數(shù)文檔書寫。
例如:
擁有函數(shù)說明文檔之后,就可以獲取函數(shù)的文檔內(nèi)容,方法是:
函數(shù)名.__doc__
例如:
除此之外,還可以用 help(函數(shù)名) 的方式進(jìn)行函數(shù)文檔的查看,例如:
7.函數(shù)的返回值
關(guān)鍵字:return
返回值誰調(diào)用就返回給誰
1. 任何函數(shù)都有返回值
2. 如果不寫return ,也會(huì)默認(rèn)加一個(gè)return None
3. 如果寫return ,不寫返回值 也會(huì)默認(rèn)加一個(gè)None
4. 可以返回任何數(shù)據(jù)類型
5. return后面的代碼不在執(zhí)行,代表著函數(shù)的結(jié)束
8.函數(shù)的變量的作用域
首先需要明白兩個(gè)概念:局部變量和全局變量。
1. 局部變量定義在函數(shù)內(nèi)部的變量先賦值在使用從定義開始到包含他的代碼結(jié)束在外部無法訪問
2. 全局變量1. 定義在源文件的開頭2. 作用范圍:整個(gè)文件3. 局部變量和全局變量發(fā)生命名沖突時(shí),以局部變量優(yōu)先
3.global聲明全局變量
4. nonlocal聲明的是局部變量
9.內(nèi)嵌函數(shù)
定義在函數(shù)內(nèi)部的函數(shù)叫做內(nèi)嵌函數(shù)(或者叫內(nèi)部函數(shù)),內(nèi)部函數(shù)的作用范圍:從定義開始到包含給他的代碼塊結(jié)束在內(nèi)部函數(shù)中不能進(jìn)行a+=1,a=a+1這樣的操作,解決方案是nonlocal 和global。
例如:
10.閉包
閉包是函數(shù)式編程的重要語法結(jié)構(gòu)。
編程范式:一種編程范式,對(duì)代碼進(jìn)行提煉和抽象概括,使得重用性更高
如果內(nèi)部函數(shù)調(diào)用了外部函數(shù)的局部變量,并外部函數(shù)返回內(nèi)部函數(shù)的函數(shù)對(duì)象(函數(shù)名),例如:
這就形成了閉包,閉包的作用是可以傳遞更少的形參,可以傳遞更多的實(shí)參—更加安全,間接性的訪問內(nèi)部函數(shù),例如:
當(dāng)然了,閉包是有條件的:
1. 必須是一個(gè)內(nèi)嵌函數(shù)
2. 外部函數(shù)必須返回內(nèi)部函數(shù)的函數(shù)對(duì)象
3. 內(nèi)部函數(shù)必須使用外部函數(shù)的局部變量
11. lambda表達(dá)式
1. 匿名函數(shù)沒有名字的函數(shù)
2. 使用時(shí)機(jī):只使用一次的時(shí)候
3. 語法:關(guān)鍵字: lambdalambda 參數(shù)1,參數(shù)2:返回值
4. lambda的書寫形式更加的簡潔,優(yōu)雅l = lambda x:xprint(l(100))
5. lambda的優(yōu)先級(jí)最低
九、綜合性練手項(xiàng)目
學(xué)完了這些基礎(chǔ)你覺得你的水平怎么樣?是不是就這么飄過來的?說實(shí)話,學(xué)完這些基礎(chǔ)你能做的東西沒有多少的,好玩的東西都是入門之后才能做出來的。
但是在龍叔這里,綜合性項(xiàng)目還是有的,就根據(jù)我上面所講的循環(huán)語句、列表、函數(shù)等基礎(chǔ)知識(shí),可以嘗試寫一個(gè)綜合性的項(xiàng)目來檢驗(yàn)?zāi)愕闹R(shí),可以嘗試寫1個(gè)簡單的名片管理系統(tǒng)。
(一)系統(tǒng)需求
1.程序啟動(dòng),顯示名片管理系統(tǒng)歡迎界面,并顯示功能菜單
**************************************************
歡迎使用【名片管理系統(tǒng)】V1.01. 新建名片
2. 顯示全部
3. 查詢名片0. 退出系統(tǒng)
**************************************************
2.用戶用數(shù)字選擇不同的功能
3.根據(jù)功能選擇,執(zhí)行不同的功能
4.用戶名片需要記錄用戶的 姓名、電話、QQ、郵件
5.如果查詢到指定的名片,用戶可以選擇 修改 或者 刪除 名片
(二)效果預(yù)覽
大概了解了這個(gè)操作系統(tǒng)的需求之后,我們先不忙著看代碼,我們先來看看代碼運(yùn)行后的效果,這就是我們要做的東西:
這里我不放視頻了,放視頻的文章一點(diǎn)開就會(huì)自動(dòng)播放,這點(diǎn)有點(diǎn)無語,尤其是我這種長篇文章,你找半天找不到視頻在哪?哈哈哈…所以還是給大家放視頻演示的鏈接吧!
視頻效果鏈接:https://www.bilibili.com/video/BV1aZ4y1F7n6/
下次我會(huì)專門出一篇講這個(gè)名片管理系統(tǒng)項(xiàng)目的文章,現(xiàn)在你們先暫時(shí)自己嘗試著寫寫吧,源碼私聊找我要也可以的。
【Python新手入門教程專欄】
總結(jié)
以上是生活随笔為你收集整理的万字【Python基础】保姆式教学,零基础快速入门Python的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sky Garden
- 下一篇: 如何加入微服务 Apache Servi