python帶你了解阿甘的選擇(條件分支)

2020-12-14 TA運動

在前面的學習後,你現在已經會使用 Python 基本語句,調用 Python 的內置函數 print();同時理解了數據類型的概念,包括字符串、整數、浮點數這三種類型。

我們再來通回顧一下:

接下來我們將開始學習程序邏輯——條件判斷。學會了條件判斷後,我們的程序將不再單一,變得智能起來!

前幾天買了小米的智能音箱,當我呼喚「小愛同學」後,智能音箱便能執行給它下達的指令。

上面列出了部分小愛同學支持的指令,指令有指令的規則。比如想開熱水器,我要說「打開熱水器」。而如果我說 「熱水器,開!」、「熱水器 open 一下」,智能音箱是會懵圈的。

提示:小愛同學支持的指令類似 Python 的內置函數,你只能讓小愛同學或者 Python 執行一些已經定義過的指令,也就是它們支持的指令。如果你讓它們執行未定義的指令,它們會不明白你的意圖。因為小愛同學也是用計算機實現的,所以這點和 Python 一樣。

需要用熱水器的時候我只要說「小愛同學,打開熱水器」,隨後熱水器打開。這個看起來似乎已經完美了吧?

No!還不夠。我更希望它能在需要用熱水器時,熱水器自動打開。

根據生活情景,這件事情可以簡化為:如果我家裡有人,就自動打開熱水器。這樣就不需要我每次都要記住開熱水器這件事了,就像有了私人助理一樣。

在我進門的那一刻,小愛同學可以通過攝像頭檢測並進行判斷,如果我進門了,它自動打開熱水器。小愛同學的指令判斷和執行,徹底將我從這件繁瑣重複的小事中解放出來了!

而這個 如果...就...的邏輯就是程序裡的條件判斷。生活中的條件判斷比比皆是,你可以用 如果...就... 列一大堆出來。

而編程世界也是一樣,條件判斷非常重要。Python 默認會逐行順序執行每條語句,當碰到條件判斷的時候,它會先判斷是否符合條件,如果符合,那就執行對應的代碼。

提示:編程的實質是抽象與表達。將現實世界的問題抽象成容易處理的可計算對象,然後使用計算語言來實現它。編程世界是我們現實世界的抽象,學習編程也有助於你從另一個角度認識和理解現實世界。

接下來我們一起進入《阿甘正傳》的故事,通過阿甘的成長曆程來學習今天的知識點。

編程練習

阿甘,全名福瑞斯特·甘,從小只有 75 的智商,他的背部骨骼長歪了,必須依靠支架才可以勉強走路,阿甘和媽媽相依為命。

老師用 Python 實現了一個智商分類程序,運行代碼,輸入不同的智商值,程序會輸出對應的智商等級。

你不需要弄懂代碼的細節,直接運行你的第一個條件分支的代碼吧!

拓展:一般來說,人口中的一半人屬於正常和平均智力水平(得分在 90-109 之間),得分在 110 以上就屬於高智商者,即很聰明。 據說,愛因斯坦的智商是 160。

條件結構

阿甘在學校裡經常受到別的孩子欺侮,他跑著躲避別人的捉弄。進入高中後,有一天阿甘被人欺負,拼命逃跑,無意間衝入了橄欖球場,他跑步的速度被球隊經理看上,依靠這項技能阿甘竟然成功升入大學。

而當初如果阿甘沒有「跑」的技能,他就無法升入大學,現在我們來通過條件結構來實現這個邏輯。

上面這段代碼的含義是:如果(if)技能(skill)為(==)跑,那麼列印出升入大學,成為橄欖球隊主力!。否則(else)列印出無法升入大學,過著不為人知的生活

怎麼樣?是不是讀起來很輕鬆呢?Python 對編程初學者非常友好,只要你懂一點英語,就能輕鬆讀懂基礎的 Python 代碼。值得注意的是,在上面代碼中出現了一個新的操作符,即判斷相等符號(==),顧名思義,就是判斷操作符左邊和右邊的值是不是相等的。

注意:很多人總是分不清 = 和 == 的區別,你一定要記住了: = 是賦值,== 是判斷相等。

條件結構也叫分支結構,我們通過流程圖的形式來理解上面的代碼:

可以看到,在技能(skill)是否為跑的時候產生了分支,條件成立時走左邊的分支,條件不成立時走右邊的分支。

有了條件結構,我們的程序就「有了思維」,可以進行判斷,不再單一地從上往下執行代碼,而是可以根據不同情況執行相對應的代碼了。

編程練習

現在你已經可以讀懂 if 語句的結構了,接下來你需要將 skill 變量的值改為別的任意值(比如「無」),猜猜運行結果,然後點擊運行,驗證結果是否符合你的預期。

if...else... 語句

雖然剛剛的代碼你已經可以讀懂大概意思,但是語法細則可能尚未清楚。接下來,我們來學習 if...else... 語句的語法規則:

其中判斷條件成立時,則執行冒號後面的 代碼塊 1;反之,如果判斷條件不成立則執行 else:後面的 代碼塊 2

這裡的判斷條件一般使用比較運算符進行比較,常見的比較運算符有 ==(等於)、!=(不等於)、>(大於)、<(小於)、>=(大於等於)、<=(小於等於)。

在開車的過程中,如果開了導航的話,當超速行駛時,導航會提示我們超速了,其實這裡就用到了條件結構。假如某條公路限速 60,我們可以寫一個判斷是否超速的程序:

注意:判斷條件和 else 後面的冒號,一定不能丟掉,很多初學者會忽視這裡冒號的存在。而且在第一關學過字符串的引號必須是英文的,這裡的冒號也不例外,必須要用英文的哦~細心的你有沒有發現執行代碼塊 1 和 2 前面都有兩個空格?

那這兩個空格是必須要有的嗎,還是說可有可無呢?接下來我們通過編程練習來檢驗下。

編程練習

把下面的代碼裡兩個代碼塊中的空格都移除了,運行代碼看看是否可以成功運行?

提示:如果不能成功運行,你需要加上空格,讓它成功運行。

丟失空格會導致代碼無法運行。通過剛剛的嘗試,你應該體會到這兩個空格的重要地位了吧?

其實這個代碼行首的留白在編程裡有個專業的叫法——縮進。Python 的代碼塊是通過縮進來定義代碼塊範圍的。

縮進

代碼行的縮進決定了代碼的縮進層級,相同縮進層級的代碼具有相同的縮進,比如下面的兩行代碼是一個層級,第二行錯誤地使用了縮進將導致運行報錯:

縮進一般使用兩個空格或者四個空格,但是一定要記住要保持一致,不能一會用兩個空格,一會用四個空格。

提示:我們的課程裡面統一使用的是兩個空格。

我們再來看一下之前判斷是否超速的代碼:

第 3 行和第 5 行都縮進了,因此它們分別從屬於 if speed > 60:else:,相當於跟在大哥後面的小弟。當條件成立時,if speed > 60: 後面的小弟便出來幹活了。當條件不成立時,則 else: 後面的小弟出來幹活。

elseif 都是大哥,屬於同級。雖然 elseif 語句後面,但 else 是不用縮進的。

下面老師列出了初學者常犯的縮進錯誤:

上面代碼中 if 語句塊裡兩行代碼的縮進空格數不統一,導致程序報錯。

上面代碼中 if 語句塊裡有兩行代碼,第三行和第四行是相同的層級,但是第四行卻忘記縮進了。

上面代碼中第二行和第一行具有相同的層級,所以第二行應該和第一行保持一致。

要求嚴格的代碼縮進是 Python 語法的一大特色。代碼本身的縮進,使得 Python 不需要標明額外的符號來標識代碼塊開始和結束。對比其他程式語言,比如 Java 語言,代碼沒有要求嚴格的縮進,所以需要額外的花括號來表示代碼塊的開始和結束。

拓展:Python 使用回車來分割語句,冒號和縮進來分割代碼塊;C++ 和 Java 等語言使用分號來分割語句,花括號來分割代碼塊。

編程練習

阿甘的球隊表現出色,得到了甘迺迪總統接見。不久之後,甘迺迪被刺殺,阿甘大學畢業,此時命運之神再次向他招手,一位軍人將徵兵廣告遞到了阿甘手上。

現在請使用條件結構,補全下面的代碼,在屏幕上列印出阿甘的選擇。

提示:阿甘最終選擇應徵入伍。

現在你已經可以自己動手實現條件分支了,作為新手的你已經很厲害了!

接下來,將教你一個很多程式語言都會用到的知識——注釋。

注釋

當我們寫得代碼越來越多,越來越複雜的時候,我們回過頭看之前寫的代碼時,很難立刻就能看明白當初為什麼要這麼寫。而有了注釋,相當於給代碼做了標註筆記,下次再看的時候便能快速回憶起來。

Python 中的注釋很簡單,只需要在注釋內容前加上 # 即可。比如:

注釋是給人看的,Python 會自動忽略注釋的內容,不去執行。適當的注釋可以提高代碼可讀性,但不要加一些沒有必要的注釋,不要為了加注釋而加注釋,比如:

上面的注釋是沒有必要的,因為會 Python 的人一眼就能看出 name = '阿甘' 的含義。注釋是輔助人們來閱讀代碼的,如果代碼本來可讀性就極高,就沒有為它添加注釋的必要了。所以大家日後如果要添加注釋,可以先反問一下自己,「這裡有必要加注釋嗎?」。我們來體會一下注釋的正確打開方式:

拓展:TBD 是 to be done 的簡稱。想了解更多關於代碼注釋的有趣知識,可以去知乎搜索「你見過哪些奇趣的代碼注釋」。

這段代碼的背景是:我們公司的運營有個緊急需求,希望某促銷活動的結束日期,在 7 月 30 號當天臨時改為 2019-07-30,我們的後端徐工就臨時加了行代碼,把 end_date 寫死到這天,但為了防止之後忘記把代碼改回去,所以加了行注釋。

徐工的這行注釋一方面防止明天自己忘了改,另一方面是萬一明天徐工寫了大 bug 跑路了,後面的工程師看到這行注釋也會知道這是臨時代碼,會及時改正並感激徐工不殺之恩。

Python 會自動忽略注釋的內容。因此我們可以將暫時用不到但又不想刪掉的代碼放到注釋中,這樣 Python 就不會執行它們。將它們放到注釋中也便於日後需要用到時快速復原。舉個例子,雙十一了要做優惠活動,寫了一份優惠的代碼,節後要恢復原價。我們可以將原價注釋,節後再將注釋取消,恢復原價。

當然,這個例子很簡單,體現不了注釋的作用。但如果優惠活動複雜,我們需要注釋一大段代碼,此時,注釋便非常有用。

編程練習

阿甘所在的隊伍在農田巡邏時遭到敵方襲擊,中尉叫他快跑,阿甘一溜煙跑出叢林,這時他想起最好的朋友巴布沒有出來。在救出好幾個戰友後,也救出了垂死的巴布。但不幸的是,巴布最終還是死在了越南的一條河邊。

下面是阿甘關於巴布的講述,請你根據故事情節中注釋掉錯誤的巴布結局,運行程序。

現在,你理解了變量的使用,會使用 Python 中的第一個控制結構——條件,也了解了代碼中常見的縮進和注釋。同時,通過代碼完善阿甘的成長曆程。

我們來總結一下這關的知識點:

回望這一關,是不是覺得收穫滿滿呢?

人生本質上就是由一堆堆的選擇組成,你無時無刻不在做著選擇。而正因為不同的人會有不同的選擇,才有了多彩多姿的人生。

阿甘,基於自己的誠實、守信、認真、勇敢、重視感情而做出的一系列選擇,造就了令無數人敬佩的他!

相關焦點

  • python分支結構if-else解決你的選擇困難症,學習python第3天
    人生有了選擇而精彩,每個選擇的背後都是未知的風景。而在python程序中,也存在選擇。python分支結構if-else就是python程序中的選擇,作用py程式設計師的我們應用如何來使用python分支結構呢?下面羽憶教程為你介紹。
  • Python分支結構(if條件語句)
    在Python程序中有三種基本算法結構,分別是順序結構;分支結構和循環結構。順序結構就是按照語句的自然先後順序進行依次執行,我們之前講解的案例基本都是順序結構,順序結構比較簡單,在此不做贅述,讓我們直接來看分支結構。
  • Python的if分支結構,超簡單!
    分支結構是程序選擇判斷,從而進行更複雜操作的基礎結構。Python程序中的分支結構,主要有if語句建立。程序中的判斷最常見的是使用操作關係符判斷兩個對象的關係,並據此得到True或者False的返回結果在決定分支方向。因此在學習if分支前,我們需要先學習一下Python中的關係操作符。
  • Python基礎語法–分支語句介紹
    兩分支語句格式一:if 條件一: 執行一行或多行特定代碼 elif 條件二: 執行一行或多行特定代碼如果 if 條件成立, 則執行 if 下面的代碼如果 elif 條件成立, 則執行 elif 下面的代碼
  • Python第5課:if else 單條件雙分支結構
    沒學過編程,流程圖理解起來會有比較抽象,但學過編程後,你會發現,流程圖其實很簡單。 常見的選擇結構有:○ 單條件單分支     if○ 單條件雙分支     if  else○ 多條件多分支     if  elif  else○ 嵌套不管有多少個分支,都只能執行一個分支,或者一個也不執行,不能同時執行多個分支。
  • 教你學習:Python-100-Days-03 分支結構
    教你學習: Python-100-Days-03 分支結構本項目是參考項目內容,進行個人理解,和原有項目有出入,如想了解詳情,請自行百度去搜索項目做完一件事,再做一件事,再寫Python時一條一條執行叫做順序執行
  • python二級考試大綱內容:程序的三種控制結構
    #python#繼續學習python二級考試大綱內容:程序的三種控制結構順序結構、分支結構和循環結構這三種控制結構是編程的基礎組成部分,無論是準備考全國計算機等級考試還是單純是為了興趣而學習python,都必須掌握。
  • Python隨機森林 - CodeProject
    因為隨機森林實際上是由多種不同的決策樹組成的,所以我們最好先了解一下決策樹算法,然後再學習隨機森林的相關知識。決策樹:決策樹用樹形圖來查看各元素之間的關係,以儘可能的做出最好的決定。舉個例子,現在我們知道有一個網球運動員,他會根據不同的天氣條件來選擇是否進行比賽。
  • Python基礎知識儲備,if語句的簡單用法及實例 - IT教頭王進
    條件選擇在Python語法中是最基礎也是最重要的一個語句結構。不僅僅是程序,平時生活中我們也會面臨很多選擇,比如今天下雨,我是開車上班? 還是做公交車?今天中午是吃麵條還是吃鹹魚?所以程序也同樣面臨這樣的問題,這個值大於100 應該執行什麼操作,小於100執行什麼操作?
  • python學習筆記:條件語句IF
    可以通過下圖來簡單了解條件語句的執行過程:': # 判斷變量是否為 python print('welcome boss') # 並輸出歡迎信息else: print(name) # 條件不成立時輸出變量名稱
  • 如何學python-第六課 流程控制-IF,ELSE,條件語句
    條件判斷語句條件判斷語句會根據語句內容返回True或者False.我們上篇文章裡使用的某些語句就是條件判斷語句。如果接下來的內容讓你感到困惑,我建議你去複習一下上一篇文章。老規矩,我們還是先看看代碼:這裡這些語句就叫做『條件判斷語句』。
  • 《阿甘正傳》珍妮愛阿甘嗎?
    《阿甘正傳》這部電影信息量是非常大的,我們需要慢慢的琢磨和體會。在《阿甘正傳》中其實有兩條主線,一條明線是阿甘,一條隱線是珍妮。2、珍妮的愛珍妮對於阿甘的感情是愛情從大學時期帶阿甘回宿舍,阿甘參軍去珍妮的裸體歌唱表演後兩人的對話以及黑豹黨聚會中的行為。雖然珍妮一直都沒有明確表現對阿甘的愛,但是從細節是可以看出來的。
  • 《阿甘正傳》珍妮從未愛過阿甘,直到最後結婚
    就在入學的第一天,阿甘上了校車,同學都充滿了嫌棄,當然不是因為他是個傻子,只是他的腿上帶著支架,和其他人不一樣,大家都不讓這個腿帶支架、彎腰駝背的男孩坐在自己身邊。就在阿甘手足無措時,耳邊響起了稚嫩的小女孩的聲音: 「如果你不介意的話,就坐在這裡吧」。她就是珍妮,阿甘想用一生去守護的人。
  • 《阿甘正傳》—為何說阿甘的母親對阿甘的成長起著決定性的作用?
    ,她對阿甘說,「不管其他人說怎麼比你強,如果上帝要讓人人都一樣的話,那他會給每個人一雙腳撐」。接著又說,「福瑞斯特,你要記住,你和其他人都是一樣的,聽清楚了沒有,福瑞斯特,你並沒有什麼不一樣」。看似這句話好像和前一句話有點矛盾,其實並不矛盾,這是在給小阿甘努力打氣和強大的自信心,鼓勵他把自己當做正常人一樣看待,不要有任何自卑悲觀的心理。
  • 《阿甘正傳》:阿甘能成功,是因為他骨子裡具備這些你沒有的東西
    《阿甘正傳》不知道已經看了多少遍,每次看都有不同的感悟。但是每次看完都會讓人發自內心地感慨:阿甘能成功,是因為他骨子裡具備這些你沒有的東西!阿甘一個出生就患有先天性畸形,腿腳不能像正常人一樣走路,更不要說奔跑了。你以為這樣就夠慘了嗎?
  • 「武鵬有課」Python分支機構舉例
    如果大於20,輸出:「你的年齡已超過20」。print這塊代碼是縮進的,縮進用Tab鍵,必須要寫這個縮進,只有縮進了才代表這個輸出語句是屬於if裡的,只有if條件滿足時才會執行,否則不會被執行。不管條件滿不滿足,「再見」都會被執行。當我們輸入16的時候,條件不滿足,if裡面的輸出語句不會看到,我們只能看到「再見」。
  • 慢步學python,編程基礎知識,流程控制語句if
    慢步業餘學python編程,今天休息繼續分享python編程知識。面向過程編程,重要的是程序的流程,今天說說流程控制語句if。python的文件式運行可以參考慢步之前的文章if 條件成立,則執行代碼塊,執行完畢就直接跳出整個判斷結構。if條件不成立,就往下逐個elif 每個條件逐一判斷,同樣是符合條件就執行對應的代碼塊 。一旦進入一個分支,執行完畢,就直接跳到判斷結構後,繼續運行。
  • 《命運2》pvp職業分支推薦 pvp職業分支如何選擇
    命運2自從上架steam之後又煥發出了第二春,遊戲裡湧入了一大批的新玩家,大家剛接觸的話對遊戲的了解程度要很長時間的摸索才能建立起來,並且棒雞沒有任何新手教程更是加大了難度,所以小編給大家帶來了命運2pvp職業分支推薦,希望能幫到大家。
  • 教程丨Python3 條件控制
    Python 條件語句是通過一條或多條語句的執行結果(True 或者 False)來決定執行的代碼塊。可以通過下圖來簡單了解條件語句的執行過程:elif age > 2:    human = 22 + (age -2)*5 print("對應人類年齡: ", human) input("點擊 enter 鍵退出")將以上腳本保存在dog.py文件中,並執行該腳本:$ python3 dog.py 請輸入你家狗狗的年齡: 1相當於 14 歲的人
  • 《阿甘正傳》:對待先天不足的孩子,阿甘的媽媽給了最好的答案
    ,阿甘媽媽給出了最好的答案在電影《阿甘正傳》中,男主角阿甘從小就是一個智力上有缺陷,天生跛腳、為了矯正駝背而天天戴矯正架孩子;童年時期,夥伴們嘲笑他,沒有人願意跟阿甘做同桌;面對阿甘的先天不足,他的媽媽並沒有放棄他,面對他人異樣的眼光媽媽告訴阿甘:「你必須明白,你和你身邊的人一樣,你和他們沒有什麼不同。」