一篇文章搞懂Python程序流程控制結(jié)構(gòu)
一、程序的組織結(jié)構(gòu)
1.三種基本結(jié)構(gòu)
1996年,計算機科學(xué)家證明了這樣的事實:任何簡單或復(fù)雜的算法都可以由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)這三種基本結(jié)構(gòu)組合而成

2.程序流程圖
程序流程圖是一種表達程序控制結(jié)構(gòu)的方式,主要用于關(guān)鍵部分的程序分析和過程描述,由一系列圖形、流程線和文字說明等組成。

二、順序結(jié)構(gòu)
程序按照線性順序依次執(zhí)行的一種運行方式。
例:把大象裝冰箱分幾步:
# 把大象裝冰箱分幾步
print('--------程序開始--------')
print('1.把冰箱門打開')
print('2.把大象裝進冰箱')
print('3.關(guān)上冰箱門')
print('--------程序結(jié)束--------')
二、選擇結(jié)構(gòu)(分支結(jié)構(gòu))
程序根據(jù)判斷條件的布爾值選擇性地執(zhí)行部分代碼明確的讓計算機知道在什么條件下,該去做什么。
1.單分支 if
中文語義:如果......就......

語法結(jié)構(gòu):
if 條件表達式:
條件執(zhí)行體
if條件語句:判斷一次,條件為True時執(zhí)行一次
# if條件語句 判斷一次 條件為True時執(zhí)行一次
money = 100
s = int(input('請輸入取款金額:'))
if s <= 100:
money = money - s
print('取款成功,余額為', money)
2.雙分支 if…else
中文語義:如果......不滿足......就......

語法結(jié)構(gòu):
if 條件表達式:
條件執(zhí)行體
else:
條件執(zhí)行體2
雙分支結(jié)構(gòu)if...else,二選一執(zhí)行
'''雙分支結(jié)構(gòu)if...else,二選一執(zhí)行'''
# 從鍵盤輸入一個整數(shù),編寫程序讓計算機判斷是奇數(shù)還是偶數(shù)
num = int(input('請輸入一個整數(shù):'))
if num % 2 == 0:
print(num, '是偶數(shù)')
else:
print(num, '是奇數(shù)')
3.多分支 if…elif…else
中文語義:如果......就......如果......不滿足......就......

語法結(jié)構(gòu):
if 條件表達式:
條件執(zhí)行體
elif 條件表達式:
條件執(zhí)行體
elif 條件表達式:
條件執(zhí)行體
elif 條件表達式:
條件執(zhí)行體
else:
條件執(zhí)行體
例:
從鍵盤錄入一個整數(shù)成績:
90-100 : A
80-89 : B
70-79 : C
60-69 : D
0-59 :E
小于0或大于100 不及格
代碼:
num = int(input('從鍵盤輸入一個成績:'))
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的使用
語法結(jié)構(gòu):
if 條件表達式1:
if 內(nèi)層條件表達式:
內(nèi)層執(zhí)行體1
else:
內(nèi)層執(zhí)行體2
else:
條件執(zhí)行體

例:商場消費
會員:
>=200 8折
>=100 9折
<100 不打折
非會員:
>=200 9.5折
<100 不打折
代碼:
answer = input('您是會員嗎?y/n')
money = float(input('請輸入您的購物金額:'))
# 外層判斷是否是會員
if answer == 'y': # 會員
if money >= 200:
print('打8折,付款金額為:', money*0.8)
elif money >= 100:
print('打9折,付款金額為:', money*0.9)
else:
print('不打折,付款金額為:', money)
else: # 非會員
if money >= 200:
print('打9.5折,付款金額為:', money*0.95)
else:
print('不打折,付款金額為:', money)
5.三元表達式
語法結(jié)構(gòu):x if 判斷條件 else y
運算規(guī)則:如果判斷條件的布爾值為True,條件表達式的返回值為x,否則條件表達式的返回值為False
# 條件表達式 x if 判斷條件 else y
a = int(input('請輸入第一個整數(shù):'))
b = int(input('請輸入第二個整數(shù):'))
'''if a >= b:
print(a, '>=', b)
else:
print(a, '<', b)'''
# 條件表達式
print(str(a) + '小于' + str(b)) if a < b else (str(a) + '大于' + str(b))
6.pass語句
pass語句什么都不做,只是一個占位符,用在語法上需要語句的地方
def fun(a, b):
pass
什么時候使用pass語句:先搭建語法結(jié)構(gòu),還沒想好代碼怎么寫的時候 。
pass語句與哪些語句一起使用:
if語句的條件執(zhí)行體for-in語句的循環(huán)體- 定義函數(shù)
def時的函數(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語言的循環(huán)結(jié)構(gòu)包括兩種:遍歷循環(huán)和無限循環(huán)。遍歷循環(huán)使用保留字forin依次提取遍歷結(jié)構(gòu)各元素進行處理;無限循環(huán)使用保留字while根據(jù)判斷條件執(zhí)行程序

1.range()函數(shù)的使用
range():用于生成一個整數(shù)序列
創(chuàng)建range對象的三種方式

代碼:
# 第一種創(chuàng)建方式 range(stop) range(10) print(range(10)) # range(0,10) 返回值是一個迭代器對象 默認從0開始,默認步長為1 print(list(range(10))) # 用于查看range對象中的整數(shù)序列 list-->列表 # 第二種創(chuàng)建方式 range(start, stop) print(range(0, 10)) # 第三種創(chuàng)建方式 range(start,stop,step) print(range(0, 10, 1))
range()函數(shù)的返回值是一個迭代器對象
range類型的優(yōu)點 :不管range對象表示的整數(shù)序列有多長,所有range對象占用的內(nèi)存空間都是相同的,因為僅僅需要存儲start,stop和step,只有當(dāng)用到range對象時,才會去計算序列中的相關(guān)元素
'''內(nèi)置函數(shù) range(start(開始)未指定從0開始, stop(結(jié)束), step(步長)未指定步長為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表達從(字符串、序列等)中依次取值,又稱為遍歷for-in遍歷的對象必須是可迭代對象
for-in的語法結(jié)構(gòu)
for 自定義的變量 in 可迭代對象:
循環(huán)體
for-in的執(zhí)行圖

# for in循環(huán)
# in 表達是依次 從 (字符串,序列等) 中依次取值,又稱遍歷
# for in遍歷對象必須是可迭代對象
'''for in 語法結(jié)構(gòu)'''
# for 自定義變量 in 可迭代對象:
# 循環(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) 計算1-100之間的偶數(shù)和
# 使用for循環(huán) 計算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ù) 這個數(shù)的個位上的三次方 + 十位上的三次方 + 百位上的三次方 = 這個數(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.無限循環(huán)while
語法結(jié)構(gòu):
while 條件表達式:
條件執(zhí)行體(循環(huán)體)
四步循環(huán)法:
- 初始化變量
- 條件判斷
- 條件執(zhí)行體(循環(huán)體)
- 改變變量
- 打印輸出
計算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)有兩個輔助循環(huán)控制的保留字:break與continue。
4.1break
break用來跳出最內(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('請輸入密碼:')
if a == pwd:
print('密碼正確')
break
else:
print('密碼錯誤,請重新輸入密碼')
# while 循環(huán),四步循環(huán)法
a = 0
while a < 3:
'''條件執(zhí)行體(循環(huán)體)'''
b = '888'
pwd = input('請輸入密碼:')
if pwd == b:
print('密碼正確')
break
else:
print('密碼錯誤')
a += 1
4.2continue
continue語句用來結(jié)束當(dāng)次循環(huán),即跳出循環(huán)體中下面尚未執(zhí)行的語句,但不跳出當(dāng)前循環(huá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 語句
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:打印一個三行四列矩形
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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Flask異步發(fā)送郵件實現(xiàn)方法解析
這篇文章主要介紹了Python Flask異步發(fā)送郵件實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08
詳解基于Transformer實現(xiàn)電影評論星級分類任務(wù)
這篇文章主要為大家介紹了詳解基于Transformer實現(xiàn)電影評論星級分類任務(wù)過程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
python更新數(shù)據(jù)庫中某個字段的數(shù)據(jù)(方法詳解)
這篇文章主要介紹了python更新數(shù)據(jù)庫中某個字段的數(shù)據(jù)方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
Python如何利用struct進行二進制文件或數(shù)據(jù)流
這篇文章主要介紹了Python如何利用struct進行二進制文件或數(shù)據(jù)流問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01

