本系列為自己學習Python的筆記,如有誤,歡迎大家指正
選擇結果
選擇結構通過判斷條件是否成立,來決定執行哪個分支。選擇結構有多種形式,分為:單分支、雙分支、多分支。流程圖如下:
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-9jFYUifK-1610702861337)(.\images\image-20210115152646962.png)]
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-RcXKw5zK-1610702861353)(.\images\image-20210115152744007.png)]
單分支選擇結構
if語句單分支結果的文法形式如下:
if 條件表達式:
語句/語句塊
其中:
- 條件表達式:可以是邏輯表達式、關系表達式、算術表達式等等
- 語句/語句塊:可以是一條語句,也可以是多條語句。多條語句,縮進必須對齊一緻
num = input('請輸入一個數字:')
if int(num)<10:
print(num)
條件表達式詳解
在選擇和循環結構中,條件表達式的值為False的情況如下:
False 0 0.0 空值None、空序列對象(空清單 空元祖 空集合 空字典 空字元串) 、空range對象、空疊代對象
其他情況,均為True.
if 3: #整數作為條件表達式
print('ok')
a = [] #清單作為表達式 空清單為False
if a:
print('空清單 False')
s = 'False' #非空字元串
if s:
print('非空字元串')
c = 9
if 3<c and c<20:
print("3<c and c<20")
if True: #布爾值
print("True")
條件表達式中,不能有指派操作符
=
雙分支選擇結構
if 條件表達式:
語句塊/語句
else:
語句
num = input('請輸入一個數字')
if int(num)<10:
print(num)
else:
print('數字太大')
三元條件運算符
python提供了三元運算符,用來在某些簡單雙分支指派情況,三元條件運算符文法:
條件為真的值 if (條件表達式) else 條件為假時的值
num = input('請輸入一個數字')
print(num if int(num)<10 else '數字太大')
多分支選擇結構
if 條件表達式1:
語句/語句塊
elif 條件表達式2:
語句/語句塊
…
else:
語句/語句塊
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-zI3Enszj-1610702861355)(.\images\image-20210115160316557.png)]
score = int(input('請輸入分數'))
grade = ''
if score<60:
grade = '不及格'
elif score>=60 and score<70:
grade='及格'
elif score>=70 and score<80:
grade = '良好'
else:
grade = '優秀'
print('分數是{0},等級是{1}'.format(score,grade))
選擇結構嵌套
選擇結構可以嵌套,使用時一定要注意控制好不同級别代碼塊的縮進,因為縮進決定了代碼的從屬關系。
if 表達式1:
語句塊1
if 表達式2:
語句塊2:
else:
語句塊
else:
語句塊
循環結構
循環結構用了重複執行一條或多條語句。表達式的邏輯:如果符合條件,則反複執行循環體中的語句。在每次執行完後都會判斷一次條件是否為True,如果為True則循環重複執行。
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-IIricoFW-1610702861357)(.\images\image-20210115161743080.png)]
循環體裡面的語句至少應該包含改變條件表達式的語句,以使循環趨于結束,否則,就會變成一個死循環。
while循環
while 判斷條件(condition): 執行語句(statements)……
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和為: %d" % (n,sum))
無限循環
我們可以通過設定條件表達式永遠不為 false 來實作無限循環
var = 1
while var == 1 : # 表達式永遠為 true
num = int(input("輸入一個數字 :"))
print ("你輸入的數字是: ", num)
print ("Good bye!")
可以使用 CTRL+C 來退出目前的無限循環。
無限循環在伺服器上用戶端的實時請求非常有用。
for循環和可疊代對象周遊
for循環通常用于可疊代對象的周遊。for循環的文法格式如下:
for 變量 in 可疊代對象:
循環體語句
可疊代對象
- 序列:字元串 清單 元祖
- 字典
- 疊代器對齊
- 生成器對象
for x in list('slp'):
print(x)
d = {'name':'slp','age':18,'address':'bj'}
for x in d: #周遊所有的key
print(x)
for x in d.keys():#周遊字典所有的key
print(x)
for x in d.values():#周遊字典所有的value
print(x)
for x in d.items():#周遊字典所有的鍵值對
print(x)
range對象
range對象是一個疊代器對象,用了産生指定範圍的數字序列,格式為:range(start,end [,step])
sum_all=0
sum_even=0
sum_odd=0
for num in range(101):
sum_all +=num
if num%2 ==0:
sum_even+=num
else:
sum_odd+=num
print(sum_all,sum_even,sum_odd)
嵌套循環
一個循環内可以嵌入另一個循環,一般稱為嵌套循環,或者多重循環
eg:列印99乘法表:
for m in range(1,10):
for n in range(1,m+1):
print(m,'*',n,'=',m*n ,end='\t')
print('')
break語句
break語句可用于while和for循環,用了結束整個循環。當有嵌套時,break語句隻能跳出最近一層的循環
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-nB6cRFES-1610702861364)(.\images\E5A591EF-6515-4BCB-AEAA-A97ABEFC5D7D.jpg)]
while True:
a = input('輸入Q退出')
if a.upper() == 'Q':
print('退出')
break
else:
print('繼續')
continue語句
continue用于結束本次循環繼續下一次,嵌套的時候也是應用與最近的一次循環。
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-aqfENPtv-1610702861366)(.\images\8962A4F1-B78C-4877-B328-903366EA1470.jpg)]
n = 5
while n > 0:
n -= 1
if n == 2:
continue
print(n)
print('循環結束。')
empNum = 0
salarySum = 0;
salarys = []
while True:
s = input('請輸入員工的工資(q或Q結束)')
if s.upper() =='Q':
print('錄入完成 退出')
break;
if float(s)<0:
continue;
empNum+=1
salarys.append(float(s))
salarySum +=float(s)
print('員工數{0}'.format(empNum))
print('錄入薪資',salarys)
print('平均薪資{0}'.format(salarySum/empNum))
pass語句
Python pass是空語句,是為了保持程式結構的完整性。
pass 不做任何事情,一般用做占位語句,
循環代碼優化
- 盡量減少循環内部不必要的計算
- 嵌套循環中,盡量減少内層循環的計數,盡可能向外提
- 局部變量查詢較快,盡量使用局部變量
其他優化手段
- 連接配接多個字元串,使用join而不使用+
- 清單進行元素插入和删除,盡量在尾部操作
使用zip()并行疊代
我們可以通過zip()函數對多個序列進行并行疊代,zip()函數再最短序列用完的時候會停止
names = ('a','b','c')
ages =(16,10)
jobs = ('teacher','programmer','drive')
for name,age,job in zip(names,ages,jobs):
print("{0}--{1}--{2}".format(name,age,job))
微信搜一搜【梓莘】或掃描下方二維碼交個朋友共同進步。文章持續更新中。目前在整理python百戰學習筆記,期待後續更多的更新哦。