Python是面向對象的程式設計語言,是由C語言編寫而來的
玩一個輸出分數的小遊戲(判斷分數的等級)
有3種實作方法
這裡的第三種方法是第二種方法的改進,因為第二種方法靠縮進來實作,但是如果條件語句過多,縮進非常不美觀,第三種裡的elif相當于C語言中的else if
Python可以有效避免“懸挂else”
什麼叫“懸挂else”?
我們舉個例子,初學C語言的朋友可能很容易被以下代碼欺騙:
if ( hi > 2 )
if( hi > 7 )
printf(“好棒!好棒!”);
else
printf(“切~”);
C語言中,Else會和離它最近的if比對,這裡的else會和if( hi > 7 )比對,但是python的縮進完全避免了這個問題
條件表達式(三元操作符)
有了這個三元操作符的條件表達式,你可以使用一條語句來完成以下的條件判斷和指派操作:
x, y = 4, 5
if x < y:
small = x
else:
small = y
例子可以改進為:
small = x if x < y else y
斷言(assert)
assert這個關鍵字我們稱之為“斷言”,當這個關鍵字後邊的條件為假的時候,程式自動崩潰并抛出AssertionError的異常。
舉個例子:
>>> assert 3 > 4
以後的課程會講到如何來接收AssertionError異常
這個就非常類似于C語言中GetLastError()擷取錯誤參數的過程
一般來說我們可以用Ta在程式中置入檢查點,當需要確定程式中的某個條件一定為真才能讓程式正常工作的話,assert關鍵字就非常有用了。
Whlie 條件:
循環體
這裡的while和C語言中的while是一樣的,非常好了解
雖然說Python是由C語言編寫而來的,但是Ta的for循環跟C語言的for循環不太一樣,Python的for循環顯得更為智能和強大!
文法:
for 目标 in 表達式:
循環體
舉個例子
這裡的len()就是一個求長度的BIF
這裡的j會自動增加,不用手動控制(智能)
下面介紹經常和for一起配合使用的小夥伴range(),這個是一個BIF(内置函數)
range()
文法:range( [strat,] stop[, step=1] )
這個BIF有三個參數,其中用中括号括起來的兩個表示這兩個參數是可選的。
step=1表示第三個參數的值預設值是1。
range這個BIF的作用是生成一個從start參數的值開始到stop參數的值結束的數字序列。
看定義可能會迷茫,直接看圖就懂了
range(5)會生成一個從0開始到5結束的數字序列(不包括5)
list(range(0, 10)) 轉換成清單是:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],注意不包含 10 哦
range(2,9)會生成一個從2開始到9結束的數字序列(不包括9)
Range(1,10,2)會生成一個從1開始到10結束并且每格數字相差2的序列(有點類似于等差數列,2相當于公差d,1相當于首項,8相當于末項)
break和continue
不會C的朋友就隻能百度啦,我這隻針對有C基礎的,簡單說一下
break語句的作用是終止目前循環,跳出循環體。(退出本層循環)
continue語句的作用是終止本輪循環并開始下一輪循環(退出本次循環
)(這裡要注意的是:在開始下一輪循環之前,會先測試循環條件)。
這個程式是這節課的重點,如果讀懂了(答案和你預想的一樣),就說明學會了這節課的内容,如果不一樣,那還得加油哦~(認真讀幾遍都會有結果哒)
答案
測試題
-
假設有 x = 1,y = 2,z = 3,請問如何快速将三個變量的值互相交換?
x, y, z = z, y, x
-
if not (money < 100): 這行代碼相當于?
if money >= 100:
-
猜猜 (x < y and [x] or [y])[0] 實作什麼樣的功能?
這其實是 Python 的作者還沒有為 Python 加入三元操作符之前,Python 社群的小夥伴們靈活的使用 and 和 or 搭配來實作三元操作符的功能,這裡邊有涉及到清單和切片的知識,這部分知識很快就會講解,迫不及待的朋友可以先稍微預習下。
-
你聽說過成員資格運算符嗎?
Python 有一個成員資格運算符:in,用于檢查一個值是否在序列中,如果在序列中傳回 True,否則傳回 False。
4.設計一個驗證使用者密碼程式,使用者隻有三次機會輸入錯誤,不過如果使用者輸入的内容中包含"*"則不計算在内。
- count = 3
- password = 'FishC.com'
- while count:
- passwd = input('請輸入密碼:')
- if passwd == password:
- print('密碼正确,進入程式......')
- break
- elif '*' in passwd:
- print('密碼中不能含有"*"号!您還有', count, '次機會!', end=' ')
- continue
- else:
- print('密碼輸入錯誤!您還有', count-1, '次機會!', end=' ')
- count -= 1
5.編寫一個程式,求 100~999 之間的所有水仙花數。
如果一個 3 位數等于其各位數字的立方和,則稱這個數為水仙花數。例如:153 = 1^3 + 5^3 + 3^3,是以 153 就是一個水仙花數
- for i in range(100, 1000):
- sum = 0
- temp = i
- while temp:
- sum = sum + (temp%10) ** 3
- temp //= 10 # 注意這裡要使用地闆除哦~
- if sum == i:
- print(i)