999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用字符串連接,八行代碼就能唱首歌

2019-09-10 07:22:44
電腦報 2019年15期
關鍵詞:內容

極客戰記的關卡主要是偏向鍛煉用戶的基本語法結構和計算機思維,讓大家熟悉極客戰記的操作與代碼的使用。“似曾相似的味道”這關涉及的知識點較多,有字符串的連接,程序的自動化邏輯,還有運算符的使用,利用變量和字符串的連接,實現了循環自動讓英雄唱歌的程序,合理利用變量和循環,能讓你的程序更具備自動性。

1. 思路講解

查看默認代碼,在代碼里能看到一大段的英文,給人一種沒有翻譯完全的恐怖感,但實際上閱讀注釋就會知道,這一大段的英文,只是英雄需要唱的英文歌謠,我們不需要理解它的意思。

如果此時注釋閱讀完了,但仍不太清楚本關的任務,還可以直接運行游戲,看看默認代碼的運行情況及失敗原因。從左上角可以看到,本關的過關目標是讓英雄跟著大家一起唱歌。

但是從實際的運行情況來看,除了第一句“ 10 potions of health on the wall!”以外,英雄唱的都跟別人不一樣。因此我們可以按照注釋和游戲動畫里的模板,為英雄添加代碼,讓英雄唱的內容跟其他人一樣。從頭開始查看動畫,觀察大塊頭的歌唱內容:

10 potions of health on the wall!

10 potions of health!

Take 1 down, pass it around!

9 potions of health on the wall!

9 potions of health on the wall!

9 potions of health!

Take 1 down, pass it around!

8 potions of health on the wall!

8 potions of health on the wall!

……

可以看出歌唱的內容似乎具有一定的重復性。再看看注釋給的歌唱模板。

如果把X當成10,Y當成1,就會發現這四句注釋的內容恰好與前四句歌唱內容一模一樣。然后再把X當成9,Y當成1,則又變成了接下來的四句。因此我們可以分析出,歌唱內容具有一個循環性,每四句一個循環,可以直接使用循環來讓英雄唱歌,減輕代碼量。但如果要使用循環又會有一個問題,循環的內容都是設定好的,但實際的歌唱內容,每四句X就會減1,那么這個又該如何實現呢?

還記得在地牢里我們是怎么實現全自動發現敵人攻擊敵人的嗎?

while True:

enemy = hero.findNearestEnemy()

if enemy:

hero.attack(enemy)

利用變量,我們隨時發現新的敵人,將它的名字賦入變量里,再讓英雄對這個變量發起進攻,這樣就用一個變量,實現了發現敵人,攻擊敵人,再發現新敵人,再攻擊新敵人的程序邏輯。

因此,如果我們想要實現全自動的循環唱歌,我們也可以利用變量。其實注釋里的模板就是給我們最大的提示,模板里的X和Y兩個未知數,不正是我們需要設置變量的兩個內容嗎?

前兩句唱的是X,第三句唱Y,而第四句就是唱X-Y,唱完四句,再讓X變量減1,Y不變,開始下一個循環。明白了過關思路后,那么我們就可以開始動手寫代碼了。此時或許會有一個問題,變量如何和字符串混用?

2.字符串連接

以往我們說話,輸出字符串,有兩個方式:(1)直接輸出型;(2)變量間接輸出型。從來沒有試過變量和字符串同時混用的,你不能把變量加到雙引號內,這樣它就變成了一個普通的字符,也不能放在雙引號外,直接混用會發生報錯。

此時我們就需要使用加號連接符「+」,當我們需要將變量和字符串同時輸出的時候,我們就需要將加號連接符「+」放在兩個內容的中間,就像這樣:

此時報錯就解除了,英雄也能準確說出要說的內容。明白了使用方法后,即可開始編寫過關代碼。系統已為我們定義好兩個變量,根據第11行的歌唱內容,我們也能分析出potionsOnTheWall對應的正是X,numToTakeDown對應的是Y。因此我們可以補出后面的代碼:

連接的時候,可千萬別忘了用于美觀的空格。寫到第16行的時候,你看到了一行陌生的代碼,如果你不知道它的作用,可以先將它刪去,然后按照自己的思路進行過關,一會兒我們再對這行代碼進行講解。寫上最后一句,這時,循環的前四句要歌唱的內容已經寫好,接下來如果要進入下一句循環,我們需要將X,也就是potionsOnTheWall減1。這樣,我們就可以順利通關了。

但這還并不是完美的通關代碼,根據歌謠的內容,其實每一次X減去的數值都是Y的數值,而Y剛好是1,因此我們最后一行就可以直接寫X - 1,但這仍然并不完美,因為如果Y的數值改變了,那么我們還要手動更改最后一行的數值,所以我們還可以對代碼做一定的修改。

3.自增自減運算

看到最后一行代碼,我們在這一行里,進行了一個減法的運算,讓potionsOnTheWall的值等于potionsOnTheWall - 1,這就是一個自減的運算。

比如potionsOnTheWall = potionsOnTheWall - 1,因為在代碼中,像加減乘除這一類運算式是優先計算的,所以這一行的代碼,會先執行potionsOnTheWall - 1 ,然后得出結果,當potionsOnTheWall為10時,這里的結果就會是9。

然后再執行賦值運算「=」,用等號,將結果賦入potionsOnTheWall變量中,這樣就實現了potionsOnTheWall變量的自我減少。由于1和變量numToTakeDown的值是一樣的,為了實現更方便的代碼,讓每次potionsOnTheWall都減去的是numToTakeDown的值而不是我們手動設定的值,我們可以把此處的1,替換成numToTakeDown。

就像這樣,效果也是一樣的,而這種自減運算,還有一種縮寫形式:直接把減號、等號,還有重復的內容省去,這也就是我們剛剛刪除掉的代碼了。它的作用,就是將potionsOnTheWall自減去numToTakeDown的值,同理也還有自增語句。因此我們可以對代碼結構優化一下,在最后一句歌詞前,先進行一次自減,然后potionsOnTheWall的值就減少了1,就可以直接在最后一句歌詞里使用potionsOnTheWall變量了。此時的代碼,就更為靈活精簡了。

猜你喜歡
內容
內容回顧溫故知新
科學大眾(2022年11期)2022-06-21 09:20:52
內容回顧 溫故知新
科學大眾(2021年21期)2022-01-18 05:53:48
內容回顧溫故知新
科學大眾(2021年17期)2021-10-14 08:34:02
內容回顧溫故知新
科學大眾(2021年19期)2021-10-14 08:33:02
內容回顧 溫故知新
科學大眾(2021年9期)2021-07-16 07:02:52
內容回顧 溫故知新
科學大眾(2020年23期)2021-01-18 03:09:18
內容回顧 溫故知新
科學大眾(2020年17期)2020-10-27 02:49:04
引言的內容
引言的內容
主要內容
臺聲(2016年2期)2016-09-16 01:06:53
主站蜘蛛池模板: 亚洲精品在线影院| 国产在线精品网址你懂的| 亚洲色图欧美在线| 亚洲女人在线| 日本尹人综合香蕉在线观看| 成人国产精品网站在线看| 丰满少妇αⅴ无码区| 成人在线不卡| 思思热精品在线8| 日韩免费成人| 黄色一级视频欧美| 精品偷拍一区二区| 日本三区视频| 日本久久免费| 二级毛片免费观看全程| 亚洲性网站| 在线观看欧美国产| 国产色婷婷| 亚洲天堂视频在线观看| 国产色伊人| 亚洲人成人伊人成综合网无码| 亚洲色图另类| 免费99精品国产自在现线| 夜夜爽免费视频| 国产激情无码一区二区免费| 自慰网址在线观看| 日本欧美一二三区色视频| 日本亚洲成高清一区二区三区| 午夜激情婷婷| 亚洲国产精品一区二区高清无码久久| 亚洲中文字幕日产无码2021| 亚洲啪啪网| 999在线免费视频| 丁香六月综合网| 拍国产真实乱人偷精品| 亚洲天堂视频网站| 成人一级黄色毛片| 久久99国产乱子伦精品免| 人妻一本久道久久综合久久鬼色| 日韩一二三区视频精品| 精品国产三级在线观看| 91精品国产无线乱码在线| 久久久黄色片| 91系列在线观看| 亚洲第一成年网| 日韩精品一区二区三区大桥未久 | 99久久人妻精品免费二区| 97se亚洲综合在线天天| 久久semm亚洲国产| 国产高清在线观看| 麻豆国产精品| 国产黑丝一区| 亚洲综合国产一区二区三区| 亚洲欧美自拍一区| 国产精品深爱在线| 人妻免费无码不卡视频| 亚洲资源站av无码网址| 波多野结衣亚洲一区| 国产成人精品无码一区二| 久久久久国色AV免费观看性色| 欧美日韩精品一区二区在线线 | 国内精自线i品一区202| 夜色爽爽影院18禁妓女影院| 色综合a怡红院怡红院首页| 国产另类视频| 毛片手机在线看| 亚洲国语自产一区第二页| 538国产在线| 国产呦精品一区二区三区下载| 欧美成人精品在线| 蝴蝶伊人久久中文娱乐网| 丁香婷婷综合激情| 91免费片| 99久久精品国产综合婷婷| 亚洲免费黄色网| 国产午夜一级淫片| 欧美国产精品不卡在线观看| 青草国产在线视频| 四虎AV麻豆| 欧美国产日韩在线| 2020国产免费久久精品99| 影音先锋丝袜制服|