目錄:
1、課堂小練習shell
2、"懸掛else"測試
3、條件表達式(三元操做符)spa
4、斷言code
5、課時08課後習題及答案視頻
******************blog
1、課堂小練習input
******************io
如今來考考你們,按照100分制,90分以上成績爲A,80到90爲B,60到80爲C,60如下爲D,寫一個程序,當用戶輸入分數,自動轉換爲ABCD的形式打印。社區
#p4_1.py score = int(input('請輸入一個分數:')) if 100 >= score >= 90: print('A') if 90 > score >= 80: print('B') if 80 > score >= 60: print('C') if 60 > score >= 0: print('D') if score < 0 or score > 100: print('輸入錯誤!')
#p4_2.py
score = int(input('請輸入您的分數:')) if 100 >= score >= 90: print('A') else: if 90 > score >= 80: print('B') else: if 80 > score >= 60: print('C') else: if 60 > score >= 0: print('D') else: print('輸入錯誤!')
#p4_3.py score = int(input('請輸入一個分數:')) if 100 >= score >= 90: print('A') elif 90 > score >= 80: print('B') elif 80 > score >= 60: print('C') elif 60 > score >= 0: print('D') else: print('輸入錯誤!')
結果分析:假如輸入的分數是98,按照第一種方法是第一次就判斷成功,接着打印字母A,但接着會進行第2、3、4、五次判斷,而後這些都不符合,退出程序。若採用第2、三種方法,那麼在第一次判斷成立並打印字母A後,接着不須要再進行任何判斷就推出程序。可見雖然是很簡單的例子,但就輸入98來講,假設第一次判斷會消耗一個CPU的時間,那麼第一種方法比第二和第三種方法多消耗了400%的時間!!!ast
*****************
2、"懸掛else"
*****************
什麼叫「懸掛else」?
咱們舉個例子,初學C語言的朋友可能很容易被如下代碼欺騙:
if ( hi > 2 ) if( hi > 7 ) printf(「好棒!好棒!」); else printf(「切~」);
在這個例子中,雖然else很想和外層的if匹配,但事實上按照C語言的就近匹配原則這個else是屬於內層if的。在Python中強制使用縮進,因此在Python中製造出懸掛else的問題是不可能的。
*********************************
3、條件表達式(三元操做符)
*********************************
有了這個三元操做符的條件表達式,你可使用一條語句來完成如下的條件判斷和賦值操做:
x, y = 4, 5 if x < y: small = x else: small = y
例子能夠改進爲:
small = x if x < y else y
三元操做符語法:
a = x if 條件 else y (表示當條件爲True的時候,a的值賦值爲x,不然賦值爲y。)
**********
4、斷言
**********
assert這個關鍵字咱們稱之爲「斷言」,當這個關鍵字後邊的條件爲假的時候,程序自動崩潰並拋出AssertionError的異常。
舉個例子:
>>> assert 3<4 >>> assert 3>4 Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> assert 3>4 AssertionError
通常來講咱們能夠用Ta在程序中置入檢查點,當須要確保程序中的某個條件必定爲真才能讓程序正常工做的話,assert關鍵字就很是有用了。
*******************************
5、課時08課後習題及答案
*******************************
測試題:
0. if not (money < 100): 上邊這行代碼至關於?
1. assert 的做用是什麼?
2. 假設有 x = 1,y = 2,z = 3,請問如何快速將三個變量的值互相交換?
3. 猜猜 (x < y and [x] or [y])[0] 實現什麼樣的功能?
4. 你據說過成員資格運算符嗎?
動動手:
0. 視頻中小甲魚使用 if elif else 在大多數狀況下效率要比所有使用 if 要高,但根據通常的統計規律,一個班的成績通常服從正態分佈,也就是說平均成績通常集中在 70~80 分之間,所以根據統計規律,咱們還能夠改進下程序以提升效率。
1. Python 的做者在很長一段時間不願加入三元操做符就是怕跟C語言同樣搞出國際亂碼大賽,蛋疼的複雜度讓初學者望而生畏,不過,若是你一旦搞清楚了三元操做符的使用技巧,或許一些比較複雜的問題反而迎刃而解。
請將如下代碼修改成三元操做符實現:
x, y, z = 6, 5, 4 if x < y: small = x if z < small: small = z elif y < z: small = y else: small = z
答案:
測試題答案:
assert這個關鍵字咱們稱之爲「斷言」,當這個關鍵字後邊的條件爲假的時候,程序自動崩潰並拋出AssertionError的異常。
什麼狀況下咱們會須要這樣的代碼呢?當咱們在測試程序的時候就很好用,由於與其讓錯誤的條件致使程序從此莫名其妙地崩潰,不如在錯誤條件出現的那一瞬間咱們實現「自爆」。
通常來講咱們能夠用Ta在程序中置入檢查點,當須要確保程序中的某個條件必定爲真才能讓程序正常工做的話,assert關鍵字就很是有用了。
2. 假設有 x = 1,y = 2,z = 3,請問如何快速將三個變量的值互相交換?
x, y, z = z, y, x
3. 猜猜 (x < y and [x] or [y])[0] 實現什麼樣的功能?
這實際上是 Python 的做者尚未爲 Python 加入三元操做符以前,Python 社區的小夥伴們靈活的使用 and 和 or 搭配來實現三元操做符的功能,這裏邊有涉及到列表和切片的知識,這部分知識很快就會講解,火燒眉毛的朋友能夠先稍微預習下。
4. 你據說過成員資格運算符嗎?
Python 有一個成員資格運算符:in,用於檢查一個值是否在序列中,若是在序列中返回 True,不然返回 False。
>>> name = '小甲魚' >>> '魚' in name True >>> '肥魚' in name False
動動手答案:
0. 視頻中小甲魚使用 if elif else 在大多數狀況下效率要比所有使用 if 要高,但根據通常的統計規律,一個班的成績通常服從正態分佈,也就是說平均成績通常集中在 70~80 分之間,所以根據統計規律,咱們還能夠改進下程序以提升效率。
score = int(input('請輸入一個分數:')) if 80 > score >= 60: print('C') elif 90 > score >= 80: print('B') elif 60 > score >= 0: print('D') elif 100 >= score >= 90: print('A') else: print('輸入錯誤!') 複製代碼
1. Python 的做者在很長一段時間不願加入三元操做符就是怕跟C語言同樣搞出國際亂碼大賽,蛋疼的複雜度讓初學者望而生畏,不過,若是你一旦搞清楚了三元操做符的使用技巧,或許一些比較複雜的問題反而迎刃而解。
small = x if (x < y and x < z) else (y if y < z else z)