回圈結構
程式設計中,最能發揮計算機特長的結構:回圈結構
需要重復進行某種運算,并且運算物件有規律變化的情況,使用回圈結構
使用for n in range(2,10)時,不包括10
python中不支持直到型回圈結構(后測回圈實作)
但可以通過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;
#若數字有效跳出回圈,哨兵回圈
print("The number you entered was not positive")
注意:與Java、C區別最大的地方
<for… else: …> <while… else: …>陳述句與回圈的搭配使用,else:后的運算式在for回圈串列遍歷完畢后或while 條件陳述句不滿足的情況下執行,
# 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>
條件判斷
回圈和分支使用的條件回圈陳述句這里使用的不是!、||、&&,而是布爾運算式not、or、and
布爾運算式滿足或對與、與對或的分配律,滿足德摩根定理
有時候尋找一個回圈終止的條件比尋找一個回圈繼續的條件更容易,但是條件過于復雜,解決方法:
對布爾運算式使用幾次德摩根定律
注意不要將while rep==‘y’ or rep==‘Y’, 錯寫成 while rep == ‘y’ or ‘Y’, 因為’Y’是一個非空串,永遠為真
對于數字的0值默認為假,對于空字串""默認為假,空序列默認為假,
python的布爾運算子為短路運算子,當前面的運算式已經可以得出該布爾運算式的真偽時,布爾運算式便不再進行下去,
即x and y中,當x為假,則不在計算y的真偽;
x or y中,當x為真,就不在判斷y的真偽,
舉個栗子,當用戶僅敲下回車鍵時,input()函式讀入的串為空串,下面寫一個函式,當用戶輸入為空時,將字串賦值為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解釋器遇到一個try陳述句,它會嘗試執行try陳述句體內的陳述句
如果沒有錯誤,控制轉到try-except后面的陳述句
如果發生錯誤,Python解釋器會尋找一個符合該錯誤的例外陳述句,然后執行處理代碼
try:
<body>
except <ErrorType1>:
<handler1>
except <ErrorType2>:
<handler2>
except <ErrorType3>:
<handler3>
except:
<handler0>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/73535.html
標籤:其他
