一篇文章搞懂Python程序流程控制結(jié)構(gòu)
一、程序的組織結(jié)構(gòu)
1.三種基本結(jié)構(gòu)
1996年,計(jì)算機(jī)科學(xué)家證明了這樣的事實(shí):任何簡(jiǎn)單或復(fù)雜的算法都可以由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)這三種基本結(jié)構(gòu)組合而成
2.程序流程圖
程序流程圖是一種表達(dá)程序控制結(jié)構(gòu)的方式,主要用于關(guān)鍵部分的程序分析和過(guò)程描述,由一系列圖形、流程線和文字說(shuō)明等組成。
二、順序結(jié)構(gòu)
程序按照線性順序依次執(zhí)行的一種運(yùn)行方式。
例:把大象裝冰箱分幾步:
# 把大象裝冰箱分幾步 print('--------程序開始--------') print('1.把冰箱門打開') print('2.把大象裝進(jìn)冰箱') print('3.關(guān)上冰箱門') print('--------程序結(jié)束--------')
二、選擇結(jié)構(gòu)(分支結(jié)構(gòu))
程序根據(jù)判斷條件的布爾值選擇性地執(zhí)行部分代碼明確的讓計(jì)算機(jī)知道在什么條件下,該去做什么。
1.單分支 if
中文語(yǔ)義:如果......就......
語(yǔ)法結(jié)構(gòu):
if 條件表達(dá)式:
條件執(zhí)行體
if
條件語(yǔ)句:判斷一次,條件為True
時(shí)執(zhí)行一次
# if條件語(yǔ)句 判斷一次 條件為True時(shí)執(zhí)行一次 money = 100 s = int(input('請(qǐng)輸入取款金額:')) if s <= 100: money = money - s print('取款成功,余額為', money)
2.雙分支 if…else
中文語(yǔ)義:如果......不滿足......就......
語(yǔ)法結(jié)構(gòu):
if 條件表達(dá)式:
條件執(zhí)行體
else:
條件執(zhí)行體2
雙分支結(jié)構(gòu)if...else
,二選一執(zhí)行
'''雙分支結(jié)構(gòu)if...else,二選一執(zhí)行''' # 從鍵盤輸入一個(gè)整數(shù),編寫程序讓計(jì)算機(jī)判斷是奇數(shù)還是偶數(shù) num = int(input('請(qǐng)輸入一個(gè)整數(shù):')) if num % 2 == 0: print(num, '是偶數(shù)') else: print(num, '是奇數(shù)')
3.多分支 if…elif…else
中文語(yǔ)義:如果......就......如果......不滿足......就......
語(yǔ)法結(jié)構(gòu):
if 條件表達(dá)式:
條件執(zhí)行體
elif 條件表達(dá)式:
條件執(zhí)行體
elif 條件表達(dá)式:
條件執(zhí)行體
elif 條件表達(dá)式:
條件執(zhí)行體
else:
條件執(zhí)行體
例:
從鍵盤錄入一個(gè)整數(shù)成績(jī):
90-100 : A
80-89 : B
70-79 : C
60-69 : D
0-59 :E
小于0或大于100 不及格
代碼:
num = int(input('從鍵盤輸入一個(gè)成績(jī):')) if 90 <= num <= 100: print('A') elif 80 <= num <= 89: print('B') elif 70 <= num <= 79: print('C') elif 60 <= num <= 69: print('D') elif 0 <= num <= 59: print('E') else: print('不及格')
4. 嵌套if的使用
語(yǔ)法結(jié)構(gòu):
if 條件表達(dá)式1:
if 內(nèi)層條件表達(dá)式:
內(nèi)層執(zhí)行體1
else:
內(nèi)層執(zhí)行體2
else:
條件執(zhí)行體
例:商場(chǎng)消費(fèi)
會(huì)員:
>=200 8折
>=100 9折
<100 不打折
非會(huì)員:
>=200 9.5折
<100 不打折
代碼:
answer = input('您是會(huì)員嗎?y/n') money = float(input('請(qǐng)輸入您的購(gòu)物金額:')) # 外層判斷是否是會(huì)員 if answer == 'y': # 會(huì)員 if money >= 200: print('打8折,付款金額為:', money*0.8) elif money >= 100: print('打9折,付款金額為:', money*0.9) else: print('不打折,付款金額為:', money) else: # 非會(huì)員 if money >= 200: print('打9.5折,付款金額為:', money*0.95) else: print('不打折,付款金額為:', money)
5.三元表達(dá)式
語(yǔ)法結(jié)構(gòu):x if 判斷條件 else y
運(yùn)算規(guī)則:如果判斷條件的布爾值為True
,條件表達(dá)式的返回值為x
,否則條件表達(dá)式的返回值為False
# 條件表達(dá)式 x if 判斷條件 else y a = int(input('請(qǐng)輸入第一個(gè)整數(shù):')) b = int(input('請(qǐng)輸入第二個(gè)整數(shù):')) '''if a >= b: print(a, '>=', b) else: print(a, '<', b)''' # 條件表達(dá)式 print(str(a) + '小于' + str(b)) if a < b else (str(a) + '大于' + str(b))
6.pass語(yǔ)句
pass
語(yǔ)句什么都不做,只是一個(gè)占位符,用在語(yǔ)法上需要語(yǔ)句的地方
def fun(a, b): pass
什么時(shí)候使用pass
語(yǔ)句:先搭建語(yǔ)法結(jié)構(gòu),還沒想好代碼怎么寫的時(shí)候 。
pas
s語(yǔ)句與哪些語(yǔ)句一起使用:
if
語(yǔ)句的條件執(zhí)行體for-in
語(yǔ)句的循環(huán)體- 定義函數(shù)
def
時(shí)的函數(shù)體
a = 1 b = 2 if a < b: pass for i in range(10): pass def fun(a, b): pass
三、循環(huán)結(jié)構(gòu)
反復(fù)做同一件事情的情況,稱為循環(huán),Python
語(yǔ)言的循環(huán)結(jié)構(gòu)包括兩種:遍歷循環(huán)和無(wú)限循環(huán)。遍歷循環(huán)使用保留字forin
依次提取遍歷結(jié)構(gòu)各元素進(jìn)行處理;無(wú)限循環(huán)使用保留字while
根據(jù)判斷條件執(zhí)行程序
1.range()函數(shù)的使用
range()
:用于生成一個(gè)整數(shù)序列
創(chuàng)建range
對(duì)象的三種方式
代碼:
# 第一種創(chuàng)建方式 range(stop) range(10) print(range(10)) # range(0,10) 返回值是一個(gè)迭代器對(duì)象 默認(rèn)從0開始,默認(rèn)步長(zhǎng)為1 print(list(range(10))) # 用于查看range對(duì)象中的整數(shù)序列 list-->列表 # 第二種創(chuàng)建方式 range(start, stop) print(range(0, 10)) # 第三種創(chuàng)建方式 range(start,stop,step) print(range(0, 10, 1))
range()
函數(shù)的返回值是一個(gè)迭代器對(duì)象
range
類型的優(yōu)點(diǎn) :不管range
對(duì)象表示的整數(shù)序列有多長(zhǎng),所有range
對(duì)象占用的內(nèi)存空間都是相同的,因?yàn)閮H僅需要存儲(chǔ)start,stop和step,只有當(dāng)用到range
對(duì)象時(shí),才會(huì)去計(jì)算序列中的相關(guān)元素
'''內(nèi)置函數(shù) range(start(開始)未指定從0開始, stop(結(jié)束), step(步長(zhǎng))未指定步長(zhǎng)為1)''' r = range(1, 10, 2) print(r) print(list(r)) # 列表 [1, 3, 5, 7, 9] print(tuple(r)) # 元組 (1, 3, 5, 7, 9) print(set(r)) # 字典 {1, 3, 5, 7, 9}
in
與not in
判斷整數(shù)序列中是否存在(不存在)指定的整數(shù)
'''判斷指定整數(shù)在序列中是否存在 in, not in''' print(3 in r) # True print(4 in r) # False print(3 not in r) # False print(4 not in r) # True for value in range(10): print(value, end=' ')
2.遍歷循環(huán)for-in
for-in
循環(huán)
in
表達(dá)從(字符串、序列等)中依次取值,又稱為遍歷for-in
遍歷的對(duì)象必須是可迭代對(duì)象
for-in
的語(yǔ)法結(jié)構(gòu)
for 自定義的變量 in 可迭代對(duì)象:
循環(huán)體
for-in
的執(zhí)行圖
# for in循環(huán) # in 表達(dá)是依次 從 (字符串,序列等) 中依次取值,又稱遍歷 # for in遍歷對(duì)象必須是可迭代對(duì)象 '''for in 語(yǔ)法結(jié)構(gòu)''' # for 自定義變量 in 可迭代對(duì)象: # 循環(huán)體 for i in 'hello': print(i, end=' ') print('') for i in range(10): print(i, end=' ') print('') # 在循環(huán)體中如果不需要使用到自定義變量,可將自定義變量寫為下劃線('_') for _ in range(3): # 3表示次數(shù) print('hello')
使用for
循環(huán) 計(jì)算1-100之間的偶數(shù)和
# 使用for循環(huán) 計(jì)算1-100之間的偶數(shù)和 sum = 0 for item in range(101): if item % 2 == 0: sum += item print('1-100之間的偶數(shù)和為:', sum)
輸出100-999之間的水仙花數(shù)
'''輸出100-999之間的水仙花數(shù) 這個(gè)數(shù)的個(gè)位上的三次方 + 十位上的三次方 + 百位上的三次方 = 這個(gè)數(shù)''' for item in range(100, 1000): ge = item % 10 shi = item % 100 // 10 # item//10%10 bai = item // 100 if item == ge**3+shi**3+bai**3: print(item)
3.無(wú)限循環(huán)while
語(yǔ)法結(jié)構(gòu):
while 條件表達(dá)式:
條件執(zhí)行體(循環(huán)體)
四步循環(huán)法:
- 初始化變量
- 條件判斷
- 條件執(zhí)行體(循環(huán)體)
- 改變變量
- 打印輸出
計(jì)算0-4之間的累加和
a = 0 # 1.初始化變量 s = 0 while a <= 4: # 2.條件判斷 s += a # 3.條件執(zhí)行體 a += 1 # 4.改變變量 print(s) # 5.打印輸出
選擇結(jié)構(gòu)的if
與循環(huán)結(jié)構(gòu)while
的區(qū)別
If
是判斷一次,條件為True
執(zhí)行一行while
是判斷N+1
次,條件為True
執(zhí)行N
次
4.循環(huán)控制break和continue
循環(huán)結(jié)構(gòu)有兩個(gè)輔助循環(huán)控制的保留字:break
與continue
。
4.1break
break
用來(lái)跳出最內(nèi)層for
或while
循環(huán),脫離該循環(huán)后程序繼續(xù)執(zhí)行循環(huán)后續(xù)代碼,通常與 分支結(jié)構(gòu) if
一起使用。
例:從鍵盤錄入密碼,最多錄入三次,如果正確就結(jié)束循環(huán)
# for 循環(huán) for _ in range(3): # range()函數(shù)可以用作for循環(huán)的循環(huán)次數(shù) 3 表示for執(zhí)行了3次 pwd = '888' a = input('請(qǐng)輸入密碼:') if a == pwd: print('密碼正確') break else: print('密碼錯(cuò)誤,請(qǐng)重新輸入密碼') # while 循環(huán),四步循環(huán)法 a = 0 while a < 3: '''條件執(zhí)行體(循環(huán)體)''' b = '888' pwd = input('請(qǐng)輸入密碼:') if pwd == b: print('密碼正確') break else: print('密碼錯(cuò)誤') a += 1
4.2continue
continue
語(yǔ)句用來(lái)結(jié)束當(dāng)次循環(huán),即跳出循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,但不跳出當(dāng)前循環(huán),進(jìn)入下一次循環(huán),通常與分支結(jié)構(gòu) if
一起使用
例:要求輸出1-50-之間所有5的倍數(shù)
# for 循環(huán) for i in range(1, 51): if i % 5 == 0: print(i) # while 循環(huán) a = 1 while a <= 50: if a % 5 == 0: print(a) a += 1 # continue 語(yǔ)句 for item in range(1, 51): if item % 5 != 0: continue print(item)
5.嵌套循環(huán)
循環(huán)結(jié)構(gòu)中又嵌套了另外的完整的循環(huán)結(jié)構(gòu),其中內(nèi)層循環(huán)做為外層循環(huán)的循環(huán)體執(zhí)行。
例1:打印一個(gè)三行四列矩形
for _ in range(3): for _ in range(4): print('-', end='\t') print()
例2:輸出乘法口訣表
for i in range(1, 10): for j in range(1, i+1): print(i, 'x', j, '=', i*j, end='\t') print()
四、總結(jié)
到此這篇關(guān)于Python程序流程控制結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)Python程序流程控制結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何利用Python獲取文本中的電話號(hào)碼實(shí)例代碼
Python的文本處理是經(jīng)常碰到的一個(gè)問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于如何利用Python獲取文本中的電話號(hào)碼的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09Python Flask異步發(fā)送郵件實(shí)現(xiàn)方法解析
這篇文章主要介紹了Python Flask異步發(fā)送郵件實(shí)現(xiàn)方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08詳解基于Transformer實(shí)現(xiàn)電影評(píng)論星級(jí)分類任務(wù)
這篇文章主要為大家介紹了詳解基于Transformer實(shí)現(xiàn)電影評(píng)論星級(jí)分類任務(wù)過(guò)程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04python取均勻不重復(fù)的隨機(jī)數(shù)方式
今天小編就為大家分享一篇python取均勻不重復(fù)的隨機(jī)數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11python logging日志模塊以及多進(jìn)程日志詳解
本篇文章主要介紹了python logging日志模塊以及多進(jìn)程日志詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04python更新數(shù)據(jù)庫(kù)中某個(gè)字段的數(shù)據(jù)(方法詳解)
這篇文章主要介紹了python更新數(shù)據(jù)庫(kù)中某個(gè)字段的數(shù)據(jù)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11Python如何利用struct進(jìn)行二進(jìn)制文件或數(shù)據(jù)流
這篇文章主要介紹了Python如何利用struct進(jìn)行二進(jìn)制文件或數(shù)據(jù)流問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01