天天看點

【python學習筆記】10 控制語句最全總結

本系列為自己學習Python的筆記,如有誤,歡迎大家指正

選擇結果

選擇結構通過判斷條件是否成立,來決定執行哪個分支。選擇結構有多種形式,分為:單分支、雙分支、多分支。流程圖如下:

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-9jFYUifK-1610702861337)(.\images\image-20210115152646962.png)]

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-RcXKw5zK-1610702861353)(.\images\image-20210115152744007.png)]

單分支選擇結構

if語句單分支結果的文法形式如下:

if 條件表達式:

​ 語句/語句塊

其中:

  1. 條件表達式:可以是邏輯表達式、關系表達式、算術表達式等等
  2. 語句/語句塊:可以是一條語句,也可以是多條語句。多條語句,縮進必須對齊一緻
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 可疊代對象:

​ 循環體語句

可疊代對象

  1. 序列:字元串 清單 元祖
  2. 字典
  3. 疊代器對齊
  4. 生成器對象
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 不做任何事情,一般用做占位語句,

循環代碼優化

  1. 盡量減少循環内部不必要的計算
  2. 嵌套循環中,盡量減少内層循環的計數,盡可能向外提
  3. 局部變量查詢較快,盡量使用局部變量

其他優化手段

  1. 連接配接多個字元串,使用join而不使用+
  2. 清單進行元素插入和删除,盡量在尾部操作

使用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百戰學習筆記,期待後續更多的更新哦。