一、分支
python中的分支結(jié)構(gòu)只有if語(yǔ)句,沒(méi)有switch
1.什么時(shí)候需要使用if語(yǔ)句?
定義:做某件事情,需要滿(mǎn)足某個(gè)條件
2.如何使用if語(yǔ)句?
語(yǔ)法:
a.語(yǔ)法1:
if 條件語(yǔ)句:
代碼段1
說(shuō)明:
if:關(guān)鍵字 -> 如果的意思
條件語(yǔ)句:任意一個(gè)有結(jié)果的語(yǔ)句(最終會(huì)轉(zhuǎn)換成布爾值再判斷)
::固定寫(xiě)法(冒號(hào)后面第一行必須有縮進(jìn),冒號(hào)縮進(jìn)組合形成代碼段)
代碼段1:和if保持一個(gè)縮進(jìn)的一行或者多行語(yǔ)句
執(zhí)行過(guò)程:
第一步:判斷條件語(yǔ)句是否為T(mén)rue
第二步:為T(mén)rue:執(zhí)行后面的代碼段1和其他語(yǔ)句;
為False:不執(zhí)行代碼段1,直接執(zhí)行if外邊的其他語(yǔ)句
age = 16
if age >= 18:
print('你可以玩耍了')
# 和if保持一個(gè)縮進(jìn),均滿(mǎn)足條件,都會(huì)執(zhí)行
print('你可以去上海迪士尼玩了')
print('=====') # 沒(méi)有和if保持一個(gè)縮進(jìn),程序都會(huì)執(zhí)行
總結(jié):需要滿(mǎn)足某個(gè)條件才執(zhí)行的語(yǔ)句就寫(xiě)在if里面,不管條件是否滿(mǎn)足都執(zhí)行的語(yǔ)句,寫(xiě)在if的外面
b.語(yǔ)法:
if 條件語(yǔ)句:
代碼段1
else:
代碼段2
(其他語(yǔ)句)
說(shuō)明:
else:關(guān)鍵字 -> 否則的意思(不滿(mǎn)足if條件的其他情況)
執(zhí)行過(guò)程:
第一步:判斷條件語(yǔ)句是否為T(mén)rue
第二步:為T(mén)rue:執(zhí)行后面的代碼段1;為False:執(zhí)行代碼段2,然后執(zhí)行else外邊的其他語(yǔ)句
num = int(input('輸入一個(gè)數(shù)字:'))
if num % 2 == 0:
print('%d是偶數(shù)' % num) # 滿(mǎn)足條件執(zhí)行
else:
print('%d是奇數(shù)' % num) # 不滿(mǎn)足條件執(zhí)行
print('=========') # 無(wú)論與否,都會(huì)執(zhí)行
c.語(yǔ)法:
應(yīng)用:當(dāng)情況不止兩種時(shí),采用
if 條件語(yǔ)句1:
代碼段1
elif 條件語(yǔ)句2:
代碼段2
elif 條件語(yǔ)句3:
代碼段3
...
else:
代碼段n
(其他語(yǔ)句)
說(shuō)明:
elif:關(guān)鍵字 -> 前面條件不滿(mǎn)足,則開(kāi)始判斷其他條件是否滿(mǎn)足
執(zhí)行過(guò)程:
第一步:判斷條件語(yǔ)句1是否為T(mén)rue
第二步:為T(mén)rue:執(zhí)行后面的代碼段1;執(zhí)行其他語(yǔ)句
第三步:為False:判斷條件語(yǔ)句2是否為T(mén)rue
第四步:重復(fù)二、三步驟
第n步;前面都不成立,執(zhí)行else后面的語(yǔ)句,然后執(zhí)行其他語(yǔ)句
注意:后面的語(yǔ)句判斷的前提是前面的條件語(yǔ)句不成立
salary = 20000
if salary <= 5000:
print('水中游')
elif salary <= 10000:
print('同城游')
elif salary <= 15000:
print('國(guó)內(nèi)游')
else:
print('國(guó)外游')
print('----------------')
補(bǔ)充:a. python中可以使用3個(gè)雙引號(hào)或者3個(gè)單引號(hào),來(lái)表示一個(gè)字符串
b. else不是一定要寫(xiě),根據(jù)情況后面的else結(jié)構(gòu)可以沒(méi)有!
擴(kuò)展
1.if的嵌套
定義:if結(jié)果里還可以寫(xiě)if結(jié)構(gòu)
# 輸入一個(gè)數(shù),如果是偶數(shù),打印“xx是偶數(shù)”,同時(shí)判斷是否能被4整除
# 如果可以打印“xx還是4的倍數(shù)”,如果不是只打印“xx是奇數(shù)”
num = int(input('請(qǐng)輸入一個(gè)數(shù)字:'))
if num % 2 == 0: # if嵌套if語(yǔ)句
print('%d是偶數(shù)' % num)
if num % 4 == 0: # num是偶數(shù)才判斷
print('%d還是4的倍數(shù)' % num)
else:
print('是偶數(shù)但是不是4的倍數(shù)!')
else: # else嵌套if語(yǔ)句
print('%d是奇數(shù)' % num)
if num % 5 == 0:
print('這個(gè)奇數(shù)是5的倍數(shù)')
2.三目運(yùn)算符
c語(yǔ)言/java/js語(yǔ)言中:表達(dá)式?值1:值2 -> 判斷表達(dá)式的值是否為T(mén)rue,
為T(mén)rue整個(gè)表達(dá)式的結(jié)果是值1,否則是值2
python中:值1 if 表達(dá)式 else 值2 -> 判斷表達(dá)式的值是否為T(mén)rue,
為T(mén)rue整個(gè)表達(dá)式的結(jié)果是值1,否則是值2
注意:當(dāng)只有兩種情況時(shí)使用
# 練習(xí):輸入年份,判斷是否是閏年。是,輸出‘閏年’,
# 否則輸出‘不是閏年’,閏年條件:被4整除,不能被100整除,
# 或者被400整除
year = int(input('請(qǐng)輸入一個(gè)年份:'))
print('閏年') if (year % 4 == 0 and year % 100 != 0) \
or year % 400 == 0 else print('不是閏年')
二、循環(huán)
1.為什么使用循環(huán)
for循環(huán)和while循環(huán)
目的:實(shí)現(xiàn)某個(gè)功能的時(shí)候需重復(fù)操作,則考慮循環(huán)
2. for 循環(huán)
a.語(yǔ)法:
for 變量 in 序列:
循環(huán)體
說(shuō)明:
for:關(guān)鍵字
變量:一個(gè)變量名(賦值與否均可),一般是新的變量
in:關(guān)鍵字(固定寫(xiě)法)
序列:屬于序列的數(shù)據(jù);包括(字符串,列表,字典,集合,元祖,生成器,迭代器,range)
注意:序列的個(gè)數(shù)決定循環(huán)體執(zhí)行的次數(shù)
::固定寫(xiě)法
循環(huán)體:需要重復(fù)執(zhí)行的代碼;和for保持一個(gè)縮進(jìn)
執(zhí)行過(guò)程(重要):
第一步:讓變量去序列中取值,一個(gè)一個(gè)取
第二步:取一個(gè)值,執(zhí)行一次循環(huán)體
for char in 'a': # 遍歷序列
print('====')
print(char)
print('aaaaaaa')
# 練習(xí):給一個(gè)字符串'hosee 23jh!hs89_=sssAsK',統(tǒng)計(jì)數(shù)字出現(xiàn)的個(gè)數(shù)
count = 0 # 保存數(shù)字的個(gè)數(shù),默認(rèn)是0個(gè)
for item in 'hosee 23jh!hs89_=sssAsK':
if '0' <= item <= '9':
count += 1
print(count)
range函數(shù)
range(N) -> 產(chǎn)生數(shù)字序列(0~N-1)(N必須是整數(shù),n > 0)
range(m,n) -> 產(chǎn)生數(shù)字序列 m~ n-1 (m,n必須是整數(shù),n > m)
range(m,n,step) -> 產(chǎn)生從m開(kāi)始,每次值加step產(chǎn)生
下一個(gè)數(shù)字,直到n前一個(gè)為止。
(m,n必須是整數(shù), step > 0,n>m step <0 n<m)
取奇數(shù)
for item in range(1, 100, 2):
# 計(jì)算1+2+3...+100
sum1 = 0
for num in range(1, 101):
sum1 += num
print(sum1)
# 練習(xí):求100以?xún)?nèi)所有能被13或者7整除的數(shù)的和
sum2 = 0
for item in range(100):
if item % 13 == 0 or item % 7 == 0:
sum2 += item
print(sum2)
通過(guò)遍歷字符串下標(biāo)遍歷字符串
str1 = 'hello world:'
# index是字符串對(duì)應(yīng)的下標(biāo),從前往后取
for index in range(len(str1)):
print(str1[index])
# index是字符串對(duì)應(yīng)的下標(biāo),從后往前取
for index in range(-1, -len(str1)-1, -1):
print(str1[index], end=' ')
3.while循環(huán)
"""
a.語(yǔ)法:
while 條件語(yǔ)句:
循環(huán)體
說(shuō)明:
while:關(guān)鍵字;當(dāng)...的時(shí)候
條件語(yǔ)句:和if后面的條件一致(賦值語(yǔ)句除外)
::固定寫(xiě)法
循環(huán)體:需要重復(fù)執(zhí)行的語(yǔ)句寫(xiě)在循環(huán)體中;
和while保持一個(gè)縮進(jìn)
執(zhí)行過(guò)程:
第一步:判斷條件語(yǔ)句是否為1
第二步:執(zhí)行循環(huán)體
第三步:重復(fù)一、二步
第四步:直到條件語(yǔ)句為0,結(jié)束循環(huán),執(zhí)行后面的語(yǔ)句
for和while的選擇
for能做的事情,while都可以做到,while能做的事情,
for循環(huán)不一定能做到
for場(chǎng)景:1.遍歷序列 2.循環(huán)次數(shù)確定
while場(chǎng)景:1.死循環(huán) 2.循環(huán)次數(shù)不確定
# 控制while循環(huán)次數(shù)
num = 0
while num < 4:
num += 1
# 用while循環(huán)遍歷字符串
str1 = 'how are you'
index = 0
while index < len(str1):
print(str1[index])
index += 1
三、continue、break和else
1.continue
continue是python關(guān)鍵字,
要求:只能用在循環(huán)體中
功能:
while:執(zhí)行到此,結(jié)束當(dāng)次循環(huán),直接進(jìn)入下次循環(huán)的判斷
for:讓變量去取下一個(gè)值
while:直接去判斷while后面的條件是否為1
2.break
break是python關(guān)鍵字,
要求:只能用在循環(huán)體中
功能:執(zhí)行到此,循環(huán)直接結(jié)束,直接執(zhí)行其他語(yǔ)句
# 找到大于111的數(shù)字當(dāng)中第一個(gè)能夠被17整除的數(shù)
num = 111
while True:
if num % 17 == 0:
print(num)
break
num += 1
3.else
for 變量 in 序列:
循環(huán)體
else:
代碼段
while 條件語(yǔ)句:
循環(huán)體
else:
代碼段
執(zhí)行過(guò)程:循環(huán)過(guò)程不變,else后面的代碼段,循環(huán)自然死亡就會(huì)執(zhí)行,但遇到break結(jié)束,就不會(huì)執(zhí)行
for循環(huán)
for x in range(5):
print(x)
else:
print('for循環(huán)自然死亡') # 提示循環(huán)結(jié)束
print('==========') # 不管如何,都會(huì)執(zhí)行
while循環(huán)
index = 0
while index < 5:
if index == 3:
break
index += 1
else:
print('while自然死亡')