循環與分支——python
發表時間:2019-7-6
發布人:葵宇科技
浏覽次數:19
循環結構
程序設計中(zhōng),最能發揮計算機特長的結構:循環結構
需要重複進行某種運算,并且運算對象有規律變化的情況,使用循環結構
使用for n in range(2,10)時,不包括10
python中(zhōng)不支持直到型循環結構(後測循環實現)
但可(kě)以通(tōng)過while語句間接實現:
number = -1
while number < 0
number = eval(input("Enter a positive number:"))
或者
while True:
number = eval(input("Enter a positive number:"))
if x >= 0 : break;
#若數字有效跳出循環,哨兵(bīng)循環
print("The number you entered was not positive")
注意:與Java、C區别最大的地方
<for… else: …> <while… else: …>語句與循環的搭配使用,else:後的表達式在for循環列表遍曆完畢後或while 條件語句不滿足的情況下(xià)執行,
# months.py
def main():
for n in range(2,10):
for x in range(2,n):
print("({},{})\t".format(n,x))
if n%x == 0:
print(n,'equals',x,'*',n//x)
break;
else:
# loop fell through without finding a factor
print(n,'is a prime number')
main()
輸出:
2 is a prime number
(3,2)
3 is a prime number
(4,2)
4 equals 2 * 2
(5,2)
(5,3)
(5,4)
5 is a prime number
(6,2)
6 equals 2 * 3
(7,2)
(7,3)
(7,4)
(7,5)
(7,6)
7 is a prime number
(8,2)
8 equals 2 * 4
(9,2)
(9,3)
9 equals 3 * 3
分支結構
if<condition1>:
<case1 statements>
elif <condition2>:
<case2 statements>
……
else:
<default statements>
條件判斷
循環和(hé)分支使用的條件循環語句這裡使用的不是!、||、&&,而是布爾表達式not、or、and
布爾表達式滿足或對與、與對或的分配律,滿足德摩根定理
有時候尋找一個(gè)循環終止的條件比尋找一個(gè)循環繼續的條件更容易,但是條件過于複雜,解決方法:
對布爾表達式使用幾次德摩根定律
注意不要将while rep==‘y’ or rep==‘Y’, 錯寫成 while rep == ‘y’ or ‘Y’, 因為’Y’是一個(gè)非空串,永遠(yuǎn)為真
對于數字的0值默認為假,對于空字符串""默認為假,空序列默認為假。
python的布爾運算符為短(duǎn)路(lù)運算符,當前面的表達式已經可(kě)以得出該布爾表達式的真假時,布爾表達式便不再進行下(xià)去。
即x and y中(zhōng),當x為假,則不在計算y的真假;
x or y中(zhōng),當x為真,就不在判斷y的真假。
舉個(gè)栗子(zǐ),當用戶僅敲下(xià)回車(chē)鍵時,input()函數讀入的串為空串,下(xià)面寫一個(gè)函數,當用戶輸入為空時,将字符串賦值為vanilla
實現方法一:
ans = input("What flavor do you want [vanilla]:")
if ans :
flavor = ans
else:
flavor = "vanilla"
實現方法二:
ans = input(“What flavor do you want [vanilla]:”)
flavor = ans or “vanilla”
或
flavor= input("What flavor do you want [vanilla]:") or "vanilla"
異常處理
當處理錯誤或特殊情況的分支語句過多,會導緻主程序變得不清晰易讀,于是,引入異常處理機制來解決程序運行時的錯誤。
Python解釋器(qì)遇到一個(gè)try語句,它會嘗試執行try語句體内的語句
如(rú)果沒有錯誤,控制轉到try-except後面的語句
如(rú)果發生錯誤,Python解釋器(qì)會尋找一個(gè)符合該錯誤的異常語句,然後執行處理代碼
try:
<body>
except <ErrorType1>:
<handler1>
except <ErrorType2>:
<handler2>
except <ErrorType3>:
<handler3>
except:
<handler0>