• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Python求解“雞兔同籠”升級(jí)版

      2020-01-13 09:46:29牟曉東
      電腦報(bào) 2020年46期
      關(guān)鍵詞:頭數(shù)雞兔同籠數(shù)目

      牟曉東

      “雞兔同籠”趣題最早記載于1500多年前的中國(guó)古代數(shù)學(xué)著作《孫子算經(jīng)》中的“卷下”第31題(后傳至日本演變?yōu)椤苞Q龜算”),原題為:“今有雉兔同籠,上有三十五頭,下有九十四足,問(wèn)雉兔各幾何?”意思是“雞和兔的總頭數(shù)是35,總腳數(shù)是94,雞和兔各有幾只?”。

      1.問(wèn)題求解

      假設(shè)雞有x只,兔有y只,根據(jù)題意列方程為:

      x+y=35,2x+4y=94。

      求解,得:x=23,y=12;即雞有23只(46只腳)、兔有12只(48只腳)。

      2.Python編程求解

      如果使用Python語(yǔ)言來(lái)編寫程序的話,可使用for循環(huán)、range()函數(shù)和if條件判斷來(lái)完成。先使用“heads = 35”和“feet = 94”兩個(gè)賦值語(yǔ)句,保存雞和兔的總頭數(shù)和總腳數(shù);接著使用range()函數(shù)進(jìn)行for循環(huán),讓雞的數(shù)目從1開(kāi)始計(jì)數(shù)加1循環(huán),循環(huán)體中的if條件為“2*x + 4*y == feet”,即“雞數(shù)目的兩倍加兔數(shù)目的四倍之和等于總腳數(shù)”,條件成立的話,使用print語(yǔ)句進(jìn)行最終雞兔數(shù)目的輸出。保存程序?yàn)椤半u兔同籠1.py”,運(yùn)行結(jié)果顯示為“雞有 23 只,兔有 12 只?!保ㄈ鐖D1)。

      3.升級(jí)版的“雞兔同籠”

      考慮到“雞兔同籠”原題中所給出的總頭數(shù)和總腳數(shù)是固定的35和94,因此最終的求解也是固定的“23只雞、12只兔”。如果將題目進(jìn)行“升級(jí)”,雞和兔的總頭數(shù)與總腳數(shù)均由用戶從鍵盤輸入,仍然來(lái)求雞和兔的數(shù)目,應(yīng)該如何編寫程序代碼呢?

      首先使用標(biāo)準(zhǔn)輸入函數(shù)input來(lái)接收用戶從鍵盤上輸入的信息,比如“heads = input('請(qǐng)輸入雞和兔的總頭數(shù):')”和“feet = input('請(qǐng)輸入雞和兔的總腳數(shù):')”。但在此需要特別注意的是,Python的input函數(shù)接收到的輸入數(shù)據(jù)是str字符串(雖然表面上看是數(shù)字),必須要使用int來(lái)轉(zhuǎn)換成整數(shù)型才能進(jìn)行數(shù)學(xué)運(yùn)算,語(yǔ)句為“heads = int(heads)”和“feet = int(feet)”。

      接下來(lái)仍然是使用range()函數(shù)進(jìn)行for循環(huán):“for x in range(0,(heads+1))”。此時(shí)要充分考慮到用戶所輸入數(shù)據(jù)的計(jì)算結(jié)果,很有可能會(huì)出現(xiàn)“只有雞”或“只有兔”的情況。舉例:用戶輸入的總頭數(shù)是10、總腳數(shù)是20,運(yùn)算結(jié)果就應(yīng)該是“10只雞、0只兔”;或輸入總頭數(shù)是10、總腳數(shù)是40,運(yùn)算結(jié)果則是“0只雞、10只兔”。因?yàn)樵谟?jì)算機(jī)編程語(yǔ)言中,數(shù)字0總是被看作是最起始的值,Python的列表、字符串和元組等的元素均是從0開(kāi)始進(jìn)行索引的。不管是“0只雞”還是“0只兔”,在計(jì)算機(jī)看來(lái),這都是“雞兔同籠”,只不過(guò)數(shù)目是0而已。另外,由于range()函數(shù)的兩個(gè)參數(shù)是“左閉右開(kāi)”型的區(qū)間,即第一個(gè)參數(shù)是被計(jì)算在內(nèi),而第二個(gè)參數(shù)卻是不包括在內(nèi)的(只計(jì)算到它的前一個(gè)元素);所以,第二個(gè)參數(shù)應(yīng)該設(shè)置為“heads+1”,這樣就能在循環(huán)時(shí)計(jì)算到它的前一個(gè)元素(即“heads”),也就是“0只兔”的情況(“x=0”則是“0只雞”)(如圖2)。

      循環(huán)體與之前類似,仍然是if條件判斷“2*x + 4*y == feet”是否成立,成立的話則使用print輸出結(jié)果,然后使用break語(yǔ)句跳出循環(huán)。因?yàn)椴淮_定用戶從鍵盤上輸入的兩個(gè)數(shù)據(jù)是否恰好為“有效解”——雞和兔的數(shù)目必須是整數(shù)只,所以在循環(huán)體外應(yīng)該再添加一個(gè)“if 2*x + 4*y != feet”判斷語(yǔ)句,將這種無(wú)法進(jìn)行整數(shù)結(jié)果計(jì)算的情況進(jìn)行提示:“輸入的總頭數(shù)和總腳數(shù)不合法”。沒(méi)有該print語(yǔ)句的話,程序也能正常運(yùn)行,但對(duì)于這種“意外”沒(méi)有任何提示,程序缺少必要的友好性(如圖3)。

      最后將程序保存為“雞兔同籠2.py”,運(yùn)行幾次進(jìn)行測(cè)試,輸入的總頭數(shù)和總腳數(shù)包括原題目中的“35、94”、雞兔各為0只、“30、110”四種合法數(shù)值,程序均輸出了正確的計(jì)算結(jié)果;最后一個(gè)測(cè)試輸入“8、100”,結(jié)果就提示“輸入的總頭數(shù)和總腳數(shù)不合法”(如圖4)。

      猜你喜歡
      頭數(shù)雞兔同籠數(shù)目
      有機(jī)物“同分異構(gòu)體”數(shù)目的判斷方法
      從雞兔同籠談起
      中藥復(fù)方治療牛病毒性腹瀉的臨床效果觀察
      用不同方法解決“雞兔同籠”問(wèn)題
      豬場(chǎng)績(jī)效指標(biāo)“有效母豬飼養(yǎng)頭數(shù)”的探討
      雞兔同籠
      畫圖·分組·計(jì)算
      《哲對(duì)寧諾爾》方劑數(shù)目統(tǒng)計(jì)研究
      牧場(chǎng)里的馬
      “雞兔同籠”的解法
      讀寫算(中)(2015年6期)2015-02-27 08:47:23
      松滋市| 芜湖市| 镇赉县| 奉新县| 娱乐| 全椒县| 富民县| 车致| 上栗县| 镇康县| 金平| 鹿邑县| 大冶市| 晋州市| 梁山县| 平安县| 黔西| 新和县| 苗栗县| 广河县| 边坝县| 铜梁县| 中江县| 辽宁省| 大同县| 新巴尔虎右旗| 绩溪县| 舒兰市| 沙河市| 奎屯市| 峨眉山市| 海口市| 合水县| 凭祥市| 高要市| 南丹县| 民权县| 靖江市| 怀仁县| 盈江县| 中江县|