Python基礎之控制結構
Python中控制結構分爲分支結構與循環結構。
1.分支結構
(1) if 結構
適用於只有一種選擇的時候
語法結構
if 條件 :
代碼操作
例:
# 定義一個變量,存儲一個數據,判斷該數據是否爲偶數,如果是則輸出該變量
num = int(input("輸入整數:"))
if num & 1 == 0:
print("num =", num)
# 定義一個變量,存儲一個數據,判斷該數據是否在區間[3,6]中,如果在則輸出該變量
num = int(input("輸入整數:"))
if 3 <= num <= 6:
print("num =", num)
"""
注意:在Python中,通過代碼之間的縮進來表示程序的層級關係,因此在代碼書寫時,必須嚴格按照縮進執行代碼
pass Python內置關鍵字,代表空語句,一般用來充當程序的結構
"""
(2) if-else結構
該分支結構用於兩種選擇情況
語法結構
if 條件:
執行語句
else:
執行語句
# 注意:else是對if條件的否定,即當if條件不成立時執行
例:
# 用戶通過控制檯輸入數字A、B,請輸出A佔B的百分比
A = int(input("輸入整數A:"))
B = int(input("輸入整數B:"))
if A <= B:
print("A佔B的%.2f%%" % (A/B*100))
else:
# print("輸入錯誤:要求A不大於B!")
raise ValueError("輸入錯誤:要求A不大於B!")
# raise 拋出異常
# 定義三個變量,存儲三個整數,求三個整數的中間值
A = int(input("輸入整數A:"))
B = int(input("輸入整數B:"))
C = int(input("輸入整數C:"))
if (A >= B >= C) or (C >= B >= A):
print("中間值B=%d" % B)
else:
if (A >= C >= B) or (B >= C >= A):
print("中間值C=%d" % C)
else:
print("中間值A=%d" % A)
# 在開發中,很多時候需要使用if-else 的嵌套操作
(3)if-elif-else結構
用於計算機需要從多於兩個的條件結果中做出選擇
語法結構
if 條件1:
執行語句1
elif 條件2:
執行語句2
elif ...:
執行語句...
else
執行語句n
例:
# 輸入月份,判斷該月份屬於哪個季節
month = int(input("輸入月份:"))
if 3 <= month <= 5:
print("%d月是春天" % month)
elif 6 <= month <= 8:
print("%d月是夏天" % month)
elif 9 <= month <= 11:
print("%d月是秋天" % month)
elif month == 12 or 1 <= month <= 2:
print("%d月是冬天" % month)
else:
print("輸入不合法")
注意:Python注重精簡,所以不支持Switch操作!!!同時也不支持do-while循環!!!
2.循環結構
循環:程序對某一段相同代碼執行連續不停的重複執行(兩次執行)多次操作
Python中的循環分爲while循環和for循環,其中for循環成爲了迭代操作
迭代:從一個可迭代容器中重複不停的取值運算
###(1) range()方法
range():Python內置操作,用來生成指定範圍的一串連續數字
注意:range()最終返回的是一個可以迭代的容器
range(num):此過程生成一個區間爲[0,num)的一串連續數字
range(num1,num2):此過程生成一個區間爲[num1,num)的一串連續數字
range(num1,num2,step):生成從[num1,num2)的間隔爲step的一串連續數字
例:
nums = range(10)
print(list(nums))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
nums = range(2, 10)
print(list(nums))
# [2, 3, 4, 5, 6, 7, 8, 9]
nums = range(2, 10, 3)
print(list(nums))
# [2, 5, 8]
###(2)for循環結構
僅適用於有限循環
語法結構
for variable in Iterator:
循環體
variable:變量,用來存儲每一次迭代所取出的數據
Iterator:迭代對象,用來存儲數據的迭代容器
循環體:每一次迭代之後需要做的具體操作
例:
# 求[1-100]所有數的階乘
for item in range(1, 101):
mul = 1
for i in range(1, (item+1)):
mul *= i
print("!%d=%d" % (item, mul))
# 求[1-100]第一個7的倍數
for item in range(1,101):
if item % 7 == 0:
print(item)
break
else:
print("循環正常結束")
# 求兩個數的最大公約數
num1 = int(input("num1="))
num2 = int(input("num2="))
if num1 > num2:
for item in range(num2, 0, -1):
if num1 % item == 0 and num2 % item == 0:
print("最大公約數爲", item)
break
else:
for item in range(num1, 0, -1):
if num1 % item == 0 and num2 % item == 0:
print("最大公約數爲", item)
break
"""
break:強制結束break所在的循環,即使該層循環後面還有需要執行的循環,該層循環也不再執行
else:for循環,while循環可以和else綁定,else中的代碼會在循環正常結束之後執行。如果循環在執行過程中被break意外中斷,則else中的代碼不再執行
"""
(3)while循環結構
適用於有限循環及無限循環
語法格式
while 循環條件:
循環體
while循環執行原理:首先程序會判斷循環條件是否成立,如果成立則執行循環體,當循環體執行完畢,程序會自動跳轉到條件判斷,如果條件判斷成立,則繼續執行下一次循環,否則while循環結束
continue:結束本次循環,當程序執行過程中遇到continue關鍵字,則本次循環結束,程序直接跳轉到條件判斷
break:結束本層循環,當程序執行過程中遇到break關鍵字,此時break所在的循環會被強制終止
例:
# 死循環
index = 1
while index <= 10:
if index == 5:
# index += 1
continue
print(index)
index += 1
# 有一個正整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,問該數(需手動分析)
for i in range(2, 85, 2):
if 168 % i == 0:
j = 168 // i
if i > j and j & 1 == 0:
n = (i - j) // 2
x = n ** 2 - 100
if x > 0:
print(x)
i = 2
while i <= 84:
if 168 % i == 0:
j = 168 // i
if i > j and j & 1 == 0:
n = (i - j) // 2
x = n ** 2 - 100
if x > 0:
print(x)
i += 2
(4)循環嵌套
循環嵌套:在for或while循環的循環體中存在另一個for循環或while循環,構成嵌套關係的現象。開發中常用的是雙重for循環。
例:
# 空心菱形
row = int(input("輸入數字:"))
for x in range(-row, row +1):
string = ""
for y in range(-row, row +1):
if abs(x)+abs(y) == row:
string += "*"
else:
string += " "
print(string)
# *
# * *
# * *
# * *
# * *
# * *
# *
# 不完美,如果有更好的方法請告訴我