八、python基礎:三種程序控制結構

八、python基礎:三種程序控制結構

一、程序的分支結構

1、單分支結構:
單獨一個if進行條件判斷

a = 1
if a == 1:
    print('正確')

2、二分支結構:
if…else進行條件判斷

a = 1
if a == 1:
    print('正確')
else:
    print('錯誤')

3、多分支結構:
if…elif…else

a = 1
if a == 0:
    print('小於1')
elif a == 1:
    print('等於1')
elif a == 2:
    print('等於2')
else:
    print('看不懂了')

二、程序的循環結構

1、遍歷循環:for
一次遍歷循環就是把str的元素都掃描一遍

str = 'abcd'
for s in str:
    print(s)

輸出結果:
在這裏插入圖片描述
2、無限循環

i = 1
while True:
    print(i)
    i += 1
    if i == 3:
        break

輸出結果:
在這裏插入圖片描述
代碼意思:先讓i等於1,接着無限循環打印i的值,並且每打印一次,就給i加1,最後當i的值等於3的時候,使用break跳出當前的無限循環,程序結束。

while True代表一個無限循環,注意在使用的時候需要給它設置跳出循環的條件,不然程序就會一直運行下去,佔用你的cpu資源。

3、break和continue循環控制
break和continue的作用都是用來結束循環的,不同的是,每一個循環程序一般是會有多輪循環的。
break就是用來跳出整個循環的,而continue是用來跳過這個循環的某一輪。

就好比如讓一個陀螺轉圈,扔一次它會轉很多圈,break指令的作用就是讓它轉到某一圈時,遇到了break就停下來了,不再繼續轉圈了。而continue的作用,就是告訴它,這次轉圈,在轉到某一圈時,你可以停下來不轉了,但是停了一次後還是要繼續轉圈的。

4、for循環和break循環的區別:
for循環是遍歷一個結構,這個結構可以是字符串或者列表。但前提是你這個結構必須是有意義的,也就是要先給它賦值,即使你賦值爲空的,程序也不會報錯,但是遍歷的時候不會得到什麼結果,遍歷一個空字符串或空列表的時候,程序不會執行for循環下面的代碼。

如果字符串和列表不是空的,那就會把它裏面的元素一個一個掃描一遍。
如果裏面的元素都已經掃描一遍了,就自動結束循環了。

while True是一個無限循環,即使你什麼東西都沒有,它也可以一直運行下去不停的,除非有個指令讓它停下來。

它們的區別是一個有限一個無限,一個先要給它東西才幹活,一個不用給它東西就能幹活。共同點是都能通過break或者continue來控制它的結束。

三、程序的異常處理

有時候我們可以預計到在某些位置可能會出現報錯,但報錯會導致程序停止運行,後面的處理就不會繼續執行了,這時候我們可以使用異常捕獲,當捕獲到程序報錯時,根據我們的需要對異常進行處理,你可以選擇pass跳過,也可以對異常進行處理,或者收集錯誤信息,反饋給你。

1、使用try: … except: …可以對異常進行處理:

如以下代碼
先輸入一個英雄名,接着使用try嘗試進行數據庫查詢,但是有可能會查不到,查詢不到它會拋出一個異常,如果我們沒有使用try…except來進行處理的話,遇到異常這裏程序就結束了。
但是我們使用了except Exception as ret,就是告訴程序,遇到了你可以識別的錯誤,你就把這錯誤收集起來,用ret來命名,接下來用print(ret),就能把它輸出在控制檯了。

執行的順序:當try下方的某一行報錯了,它就立即停止,跳到except下方的代碼。

hname = input("請輸入您要恢復的英雄名:")
try:
    hero = self.model.objects.get(hname=name)
except Exception as ret:
    print(ret)
    pass

try…finally…跟try…except…有什麼區別呢?

finally是無論try下方的代碼是否會出現異常,最終都會執行finally下方代碼的。
而except是隻有當try下方的代碼報錯了,纔會去執行。不報錯就不執行。

try:
    hero = self.model.objects.get(hname=name)
finally:
    print('無論有沒有異常我都會執行')
    pass
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章