最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

習(xí)題 41: 來(lái)自 Percal 25 號(hào)行星的哥頓人 (Gothons)

2023-08-26 17:00 作者:薄荷糖鳶  | 我要投稿


你在上一節(jié)中發(fā)現(xiàn) dict 的秘密功能了嗎?你可以解釋給自己?jiǎn)幔?/p>

讓我來(lái)給你解釋一下,順便和你自己的理解對(duì)比看有什么不同。

這里是我們要討論的代碼:


你要記住一個(gè)函數(shù)也可以作為一個(gè)變量,``def find_city`` 比如這一句創(chuàng)建了一個(gè)你可以在任何地方都能使用的變量。在這段代碼里,我們首先把函數(shù) find_city 放到叫做 cities 的字典中,并將其標(biāo)記為 '_find'。 這和我們將州和市關(guān)聯(lián)起來(lái)的代碼做的事情一樣,只不過(guò)我們?cè)谶@里放了一個(gè)函數(shù)的名稱。 好了,所以一旦我們知道 find_city 是在字典中 _find 的位置,這就意味著我 們可以去調(diào)用它。第二行代碼可以分解成如下步驟:

  1. ?Python 看到 city_found = 于是知道了需要?jiǎng)?chuàng)建一個(gè)變量。?

  2. 然后它讀到 cities ,然后知道了它是一個(gè)字典 。

  3. ?然后看到了 ['_find'] ,于是 Python 就從索引找到了字典 cities 中對(duì)應(yīng)的位 置,并且獲取了該位置的內(nèi)容。

  4. ?['_find'] 這個(gè)位置的內(nèi)容是我們的函數(shù) find_city ,所以 Python 就知道了 這里表示一個(gè)函數(shù),于是當(dāng)它碰到 ( 就開(kāi)始了函數(shù)調(diào)用。

  5. cities, state 這兩個(gè)參數(shù)將被傳遞到函數(shù) find_city 中,然后這個(gè)函數(shù)就被 運(yùn)行了。

  6. ?find_city 接著從 cities 中尋找 states ,并且返回它找到的內(nèi)容,如果什么 都沒(méi)找到,就返回一個(gè)信息說(shuō)它什么都沒(méi)找到。

  7. ?Python find_city 接受返回的信息,最后將該信息賦值給一開(kāi)始 的 city_found 這個(gè)變量。

我再教你一個(gè)小技巧。如果你倒著閱讀的話,代碼可能會(huì)變得更容易理解。讓我們來(lái)試一下,一樣是那行:?

  1. state 和 city 是...?

  2. 作為參數(shù)傳遞給...?

  3. 一個(gè)函數(shù),位置在...?

  4. ?'_find' 然后尋找,目的地為...?

  5. ?cities 這個(gè)位置...?

  6. ?最后賦值給 city_found.?

還有一種方法讀它,這回是“由里向外”。

  1. 找到表達(dá)式的中心位置,此次為 ['_find'].?

  2. ?逆時(shí)針追溯,首先看到的是一個(gè)叫 cities 的字典,這樣就知道了 cities 中 的 _find 元素。?

  3. ?上一步得到一個(gè)函數(shù)。繼續(xù)逆時(shí)針尋找,看到的是參數(shù)。?

  4. ?參數(shù)傳遞給函數(shù)后,函數(shù)會(huì)返回一個(gè)值。然后再逆時(shí)針尋找。?

  5. ?最后,我們到了 city_found = 的賦值位置,并且得到了最終結(jié)果。?

數(shù)十年的編程下來(lái),我在讀代碼的過(guò)程中已經(jīng)用不到上面的三種方法了。我只要瞟一眼就能知道它的意思。甚至給我一整頁(yè)的代碼,我也可以一眼瞄出里邊的 bug 和錯(cuò)誤。這樣的技能是花了超乎常人的時(shí)間和精力才鍛煉得來(lái)的。在磨練的過(guò)程中,我學(xué)會(huì)了下面三種讀代碼的方法,它們是用戶幾乎所有的編程語(yǔ)言:

  1. 從前向后。

  2. 從后向前。?

  3. ?逆時(shí)針?lè)较颉?

下次碰到難懂的語(yǔ)句時(shí),你可以試試這三種方法。 現(xiàn)在我們來(lái)寫(xiě)這次的練習(xí),寫(xiě)完后再過(guò)一遍,這節(jié)習(xí)題其實(shí)挺有趣的。


代碼不少,不過(guò)還是從頭寫(xiě)完吧。確認(rèn)它能運(yùn)行,然后玩一下看看。?

你應(yīng)該看到的結(jié)果?

我玩起來(lái)時(shí)這樣的

加分習(xí)題

  1. 解釋一下返回至下一個(gè)房間的工作原理。

  2. 創(chuàng)建更多的房間,讓游戲規(guī)模變大。

  3. 除了讓每個(gè)函數(shù)打印自己以外,再學(xué)習(xí)一下“文檔字符串(doc strings)”式的注解???看你能不能將房間描述寫(xiě)成文檔注解,然后修改運(yùn)行它的代碼,讓它把文檔注解打 印出來(lái)。

  4. 一旦你用了文檔注解作為房間描述,你還需要讓這個(gè)函數(shù)打印出用戶提示嗎?試著讓運(yùn)行函數(shù)的代碼打出用戶提示來(lái),然后將用戶輸入傳遞到各個(gè)函數(shù)。你的函數(shù)應(yīng) 該只是一些 if 語(yǔ)句組合,將結(jié)果打印出來(lái),并且返回下一個(gè)房間。?

  5. 這其實(shí)是一個(gè)小版本的“有限狀態(tài)機(jī)(finite state machine)”,找資料閱讀了解一下, 雖然你可能看不懂,但還是找來(lái)看看吧


習(xí)題 41: 來(lái)自 Percal 25 號(hào)行星的哥頓人 (Gothons)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
象州县| 鸡东县| 滨海县| 新巴尔虎左旗| 成武县| 鄂托克前旗| 开化县| 肃宁县| 安乡县| 韩城市| 同仁县| 汽车| 合山市| 蒲江县| 古丈县| 腾冲县| 胶州市| 高雄市| 海口市| 伊宁县| 内乡县| 南岸区| 浦江县| 敦煌市| 谷城县| 宿松县| 泰兴市| 额济纳旗| 莱芜市| 大丰市| 新安县| 河间市| 营山县| 南通市| 道孚县| 密山市| 贞丰县| 晴隆县| 丹巴县| 玛沁县| 南宁市|