第八課:了不起的分支和循環(huán)2

內(nèi)容來源于網(wǎng)絡(luò),本人只是在此稍作整理,如有涉及版權(quán)問題,歸小甲魚官方所有。

練習(xí)題(來自小甲魚官方論壇)

0. if not (money < 100): 上邊這行代碼相當(dāng)于?

答:if money >= 100:


1. assert 的作用是什么?

答:assert這個關(guān)鍵字我們稱之為“斷言”,當(dāng)這個關(guān)鍵字后邊的條件為假的時候,程序自動崩潰并拋出AssertionError的異常。
什么情況下我們會需要這樣的代碼呢?當(dāng)我們在測試程序的時候就很好用,因?yàn)榕c其讓錯誤的條件導(dǎo)致程序今后莫名其妙地崩潰,不如在錯誤條件出現(xiàn)的那一瞬間我們實(shí)現(xiàn)“自爆”。
一般來說我們可以用Ta再程序中置入檢查點(diǎn),當(dāng)需要確保程序中的某個條件一定為真才能讓程序正常工作的話,assert關(guān)鍵字就非常有用了。


2. 假設(shè)有 x = 1,y = 2,z = 3,請問如何快速將三個變量的值互相交換?

答:x, y, z = z, y, x


3. 猜猜 (x < y and [x] or [y])[0] 實(shí)現(xiàn)什么樣的功能?

答:這其實(shí)是 Python 的作者還沒有為 Python 加入三元操作符之前,Python 社區(qū)的小伙伴們靈活的使用 and 和 or 搭配來實(shí)現(xiàn)三元操作符的功能,這里邊有涉及到列表和切片的知識,這部分知識很快就會講解,迫不及待的朋友可以先稍微預(yù)習(xí)下。

這個式子可以簡化成(x<y and x or y),即x<y為真時輸出x,否則輸出y。但當(dāng)x和y的有值為0(等同于flase)的情況就會判斷失誤。因此改為[x]和[y],這樣[x]和[y]就都為真了,再加上(0),又變成了列表的第一個元素,即復(fù)原為x或y。
一般python的寫法為 x if x<y else y
這樣代碼更易理解。


4. 你聽說過成員資格運(yùn)算符嗎?

答:Python 有一個成員資格運(yùn)算符:in,用于檢查一個值是否在序列中,如果在序列中返回 True,否則返回 False。

例如:

>>> name = '小甲魚'
>>> '魚' in name
True
>>> '肥魚' in name
False

當(dāng)下節(jié)課我們講解 for 語句的時候,你看到 in 會不會就有了更深入的理解?!


編程題

0. 視頻中小甲魚使用 if elif else 在大多數(shù)情況下效率要比全部使用 if 要高,但根據(jù)一般的統(tǒng)計(jì)規(guī)律,一個班的成績一般服從正態(tài)分布,也就是說平均成績一般集中在 70~80 分之間,因此根據(jù)統(tǒng)計(jì)規(guī)律,我們還可以改進(jìn)下程序以提高效率。

題目備忘:按照100分制,90分以上成績?yōu)锳,80到90為B,60到80為C,60以下為D,寫一個程序,當(dāng)用戶輸入分?jǐn)?shù),自動轉(zhuǎn)換為ABCD的形式打印。

答:代碼如下

score = int(input('請輸入一個分?jǐn)?shù):'))
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語言一樣搞出國際亂碼大賽,蛋疼的復(fù)雜度讓初學(xué)者望而生畏,不過,如果你一旦搞清楚了三元操作符的使用技巧,或許一些比較復(fù)雜的問題反而迎刃而解。

請將以下代碼修改為三元操作符實(shí)現(xiàn):

x, y, z = 6, 5, 4
if x < y:
    small = x
    if z < small:
        small = z
elif y < z:
    small = y
else:
    small = z

答:small = x if (x < y and x < z) else (y if y < z else z)


2.請寫下這一節(jié)課你學(xué)習(xí)到的內(nèi)容:格式不限,回憶并復(fù)述是加強(qiáng)記憶的好方式!

  • if的4種用法:if;if...else;if..elif...elif...elif...else;if嵌套;
  • Python可以有效地避免“懸掛else”(縮進(jìn)的使用)
  • 條件表達(dá)式(三元操作符)
    small = x if x < y else y(求最小數(shù))
  • 斷言(assert):當(dāng)需要確保程序中的某個條件一定為真才能讓程序正常工作時,assert關(guān)鍵字就非常有用了,關(guān)鍵字后的條件為假的時候,程序自動崩潰并拋出AssertionError異常。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,818評論 0 10
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,199評論 0 13
  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,408評論 0 2
  • 四海春雷驟雨狂,乾坤滌蕩凈八荒。 窮途濁浪一朝盡,滾滾清流譜華章。
    霙愔閱讀 415評論 2 5
  • 用翅膀分割藍(lán)天我們壯志凌云,用雙腳丈量大地我們豪情滿懷……今天偶爾看到的熟悉的高中口號。年年歲歲花相似,歲歲年年人...
    Dawn_0866閱讀 166評論 0 0