跟著《python編程快速上手-讓繁瑣工作自動(dòng)化》教材入坑Python 第二章 控制流
?第二章?控制流
?
進(jìn)入第二章節(jié),語(yǔ)句變多了,內(nèi)容相對(duì)第一章有些復(fù)雜,有些內(nèi)容不是很好理解。最好是在python軟件中練習(xí)一下,理論聯(lián)系實(shí)際,便于更好的掌握概念,理解概念,吃透概念,將所學(xué)內(nèi)容為己所用。(我也是初步接觸python,如果有些內(nèi)容有錯(cuò)誤,希望大家給我指正,互相學(xué)習(xí),共同進(jìn)步。希望大家點(diǎn)贊收藏轉(zhuǎn)發(fā)加關(guān)注,碼字不易,謝謝?。?/p>
(*由于在代碼前加入了序號(hào),致使代碼的縮進(jìn)消失了,所以復(fù)制代碼到python中會(huì)出現(xiàn)錯(cuò)誤,復(fù)制時(shí)請(qǐng)刪除代碼前的序號(hào),一步一步的按程序來(lái)縮進(jìn)代碼,避免出現(xiàn)錯(cuò)誤。以下這些代碼都是我一步一步編寫,經(jīng)過(guò)python驗(yàn)證的,所以是沒(méi)有錯(cuò)誤的。*)
?
主要內(nèi)容梳理
1.?布爾值,比較操作符,布爾操作符的使用
2.?控制流元素,語(yǔ)句(if,else,elif,while循環(huán),break語(yǔ)句,continue語(yǔ)句,for循環(huán)和range函數(shù))
3.?模塊的導(dǎo)入
(一)布爾值(boolean),比較操作符,布爾操作符的使用1.布爾數(shù)據(jù)類型兩種值:True和False(沒(méi)有引號(hào),總是以大寫字母開(kāi)頭。)
2.比較操作符(6種)
==(等于),!=(不等于),<(小于),>(大于),>=(大于等于),<=(小于等于)。
比較操作符通過(guò)提供的值,求值為True和False。
Eg1:
>>>42==42
True
>>>2!=2
False
>>>28==”28”(整型和浮點(diǎn)型的值永遠(yuǎn)不會(huì)與字符串相等。)
False
注意:
(1)?==和!=操作符可以用于所有數(shù)據(jù)類型的值,<,>,>=,<=,這四種操作符只用于整型和浮點(diǎn)型。
(2)?==(等于)和=(賦值)兩種操作符是不同的,前者是左右兩邊的值是否相同,而后者是將右邊的放到左邊的變量中。
3.布爾操作符
and,or,not。
真值表
(1)and,全真為真,有假為假。(和)
True and True ???結(jié)果:True
Falseand True ???結(jié)果:False
True and False ???結(jié)果:False
False and False ???結(jié)果:False
(2)Or,有真為真,全假為假。(或)
True or True ???結(jié)果:True
False or True ???結(jié)果:True
True or False ???結(jié)果:True
False or False ???結(jié)果:False
(3)not,真為假,假為真。
not True ???????結(jié)果:False
not False ???????結(jié)果:True
布爾操作符的順序not>and>or.
Eg2:
① not 1+1==3 or 1==1 and 5+5==9
② not False or True and False(not,假為真)
③ True or True and False(and,有假為假)
④ True or False(or,有真為真)
⑤ True
(二)控制流元素,語(yǔ)句(if,else,elif,while循環(huán),break,continue,for循環(huán)和range函數(shù),)
1.控制流元素
(1)?條件:True或者False,來(lái)決定做什么。
(2)?代碼塊3規(guī):
① 縮進(jìn)增加,代碼塊開(kāi)始
② 代碼塊可包含其他代碼塊
③ 縮進(jìn)為零,代碼塊結(jié)束。
2.?控制流語(yǔ)句(if,else,elif,while循環(huán),break,continue,for循環(huán)和range函數(shù),)
(1)?If語(yǔ)句(如果語(yǔ)句)
If 條件:
縮進(jìn)代碼塊
(2)?else(條件):(緊跟if語(yǔ)句,if語(yǔ)句條件為False時(shí)執(zhí)行程序。)
縮進(jìn)代碼塊
Eg3:
① a=4 ?????????????????????將4賦值給變量a
② if a>4: ??????????????????if 后面是條件,條件后必加:
③ print("right") ??如果條件正確就打印right代碼塊的開(kāi)始
④ else: ???????????????必加冒號(hào),且與if語(yǔ)句左端對(duì)齊。
⑤ print("wrong") ?????????否則就打印wrong
⑥ print("end") ?????????????代碼塊結(jié)束打印end
結(jié)果:
wrong??????條件錯(cuò)誤運(yùn)行else語(yǔ)句中代碼塊,打印wrong
end
(3)?elif語(yǔ)句(否則如果語(yǔ)句)
elif 條件:(跟在if語(yǔ)句后)
縮進(jìn)代碼塊
Eg4:
① if name=="a":
② print("hello!a")
③ elif age<10:
④ print("you are a")
⑤ elif age>150:
⑥ print("you are not a")
⑦ elif age>80:
⑧ print("you are grandpa")
注意:
If和elif語(yǔ)句是左對(duì)齊的語(yǔ)句,不要忘記加冒號(hào)。
可添加一系列的elif語(yǔ)句,會(huì)僅有一條語(yǔ)句或零條語(yǔ)句被執(zhí)行,一旦有一個(gè)elif語(yǔ)句的條件為True時(shí),其他的elif語(yǔ)句會(huì)自動(dòng)跳過(guò)。
另外elif的語(yǔ)句次序很重要
Eg5:
① age=200
② n=""
③ if n=="a":
④ print("hello!a")
⑤ elif age<10:
⑥ print("you are a")
⑦ elif age>80:
⑧ print("you are not a")
⑨ elif age>150:
⑩ print("you are grandpa")
結(jié)果:you are not a
Eg6:
將9和10,7和8對(duì)換一下位置。
① age=200
② n=""
③ if n=="a":
④ print("hello!a")
⑤ elif age<10:
⑥ print("you are a")
⑦ elif age>150:
⑧ print("you are grandpa")
⑨ elif age>150:
⑩ print("you are not a")
結(jié)果:you are grandpa
結(jié)果就會(huì)不同。
保證程序至少一個(gè)子句(有且只有一個(gè)執(zhí)行),if和elif的條件都為錯(cuò)誤,就執(zhí)行else語(yǔ)句。
Eg7:
① age=20
② if age==21:
③ print("hello!b")
④ elif age<10:
⑤ print("you are not?a")
⑥ esle:
⑦ print("you are a")
⑧ 結(jié)果:you are a
(4)?while循環(huán)語(yǔ)句(可讓代碼塊一遍又一遍執(zhí)行,當(dāng)條件為True時(shí)while子句就會(huì)執(zhí)行)
while 條件:
縮進(jìn)代碼塊
Eg8:
If語(yǔ)句和while語(yǔ)句的對(duì)比
① a=0
② if a<5:
③ print("hello!a")
④ a=a+1
結(jié)果:hello!a(輸出一次)
⑤ a=0
⑥ while a<5:
⑦ print("hello!a")
⑧ a=a+1
結(jié)果:hello!a
hello!a
hello!a
hello!a
hello!a(輸出五次)
當(dāng)while出現(xiàn),代碼塊縮進(jìn)開(kāi)始至結(jié)束,為一個(gè)循環(huán)體,上述循環(huán)體為6,7,8。While后的條件為真時(shí)執(zhí)行循環(huán)。錯(cuò)誤時(shí)跳出循環(huán)。
(5)?break語(yǔ)句
僅一個(gè)關(guān)鍵詞break,后面無(wú)條件和冒號(hào)。
為了讓執(zhí)行提前跳出while循環(huán)子句,執(zhí)行遇到break時(shí)就跳出循環(huán)體。
Eg9:
① while True:
② print("請(qǐng)輸入你的名字")
③ 名字=input()
④ if 名字=="張三":
⑤ break
⑥ print("結(jié)束")

第一步是無(wú)限循環(huán),只有當(dāng)輸出的名字輸入正確時(shí),也就是輸出為張三時(shí)程序才會(huì)執(zhí)行到break語(yǔ)句,跳出循環(huán)體,進(jìn)入第六步。
?
如果編寫的程序有缺陷,陷入無(wú)限循環(huán)時(shí)請(qǐng)按ctrl+c鍵來(lái)停止。
(6)?continue語(yǔ)句
內(nèi)部循環(huán),僅包含continue,后無(wú)條件和冒號(hào)。程序運(yùn)行到continue時(shí)就跳到循環(huán)開(kāi)始處。
Eg10:
① while True:
② print("請(qǐng)輸入你的名字")
③ 名字=input()
④ if 名字!="張三":
⑤ Continue
⑥ print("你好,張三!")
⑦ break
⑧ print("結(jié)束")

(7)?for循環(huán)和range函數(shù)
固定次數(shù)循環(huán)
for 變量名 in range(x):
代碼縮進(jìn)開(kāi)始至結(jié)束
Eg11:
① for i in range(5):
② print("hello a")
?

循環(huán)5次。
range(x,y,z)
x,y,z是range()的三個(gè)參數(shù)。
x為開(kāi)始值,y為終止值(不包含本身,循環(huán)停止的數(shù)字),z為步長(zhǎng)。
range(0,8,2),數(shù)字從0到8,間隔為2。(間隔也可為負(fù)數(shù))
0,0+2,2+2,4+2。不包含本身所以沒(méi)有8
Eg11:
① for i in range(0,8,2):
② print(i)
?

range(0,8,2),數(shù)字從0到8,間隔為2。(間隔也可為負(fù)數(shù))
0,0+2,2+2,4+2。不包含本身所以沒(méi)有8。
Eg12:
① for i in range(8,0,-2):
② print(i)
?

8-2,6-2,4-2,不包含0。
(三)模塊的導(dǎo)入
Python包含模塊,是python的程序,含一系列相關(guān)函數(shù)。
需要import導(dǎo)入。
Import 關(guān)鍵詞1,關(guān)鍵詞2,關(guān)鍵詞3.....(關(guān)鍵詞之間用逗號(hào)隔開(kāi),后面無(wú)冒號(hào)。)
Eg13:
① import random
② for i in range(5):
③ print(random.randint(5,10))

?
必須在函數(shù)randint之前加random.?告訴pythonrandom模塊中的隨機(jī)函數(shù)randint。還有一種不需要在函數(shù)前加前綴的方法,不過(guò)加入前綴會(huì)使代碼有可讀性。
from關(guān)鍵詞 import *的方式。我一般使用加前綴的方式。
(*由于在代碼前加入了序號(hào),致使代碼的縮進(jìn)消失了,所以復(fù)制代碼到python中會(huì)出現(xiàn)錯(cuò)誤,復(fù)制時(shí)請(qǐng)刪除代碼前的序號(hào),一步一步的按程序來(lái)縮進(jìn)代碼,避免出現(xiàn)錯(cuò)誤。以下這些代碼都是我一步一步編寫,經(jīng)過(guò)python驗(yàn)證的,所以是沒(méi)有錯(cuò)誤的。*)
?