DAY_05-分支、循環(huán)

一、分支

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自然死亡')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,196評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 175,688評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,654評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,456評(píng)論 6 406
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 54,955評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,195評(píng)論 0 287
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,725評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,608評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,802評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,048評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,422評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,673評(píng)論 1 281
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,424評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,762評(píng)論 2 372

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