4步驟解[雞兔同籠]

問:雞兔同籠,籠中總共有10個頭、24隻腳,請問雞和兔各有多少隻?

答:由於人類的計算能力有限,傳統來講,雞兔同籠這個題目都是以代數來解。但是因為電腦可以快速運算,所以我們可以用最笨的方法——暴力窮舉法把所有的情況算過一次。(準備好了嗎?請按「下一步」)

【步驟 1】

首先,我們要定義頭(heads)和腳(legs)這兩個變數。根據題目,籠子裡總共有10個頭、24隻腳,所以先寫「heads=10」、「legs=24」。

heads = 10

legs = 24

大家可以在右方的輸入框裡輸入以上兩行程式碼(稍後待程式完成後可按下「run」讓程式跑跑看),然後按「下一步」。

  • 變數:指所代表的內容可以改變
  • =:用來指定「值」,跟數學裡的「等於」意思不同
  • 【步驟 2】

    接著,我們用「for」這個指令來定義雞(chickens)這個變數。

    for chickens in range(1, heads):

    這裡是一個迴圈,會讓之後的程式碼被整整跑過9次,也就是雞的數量會從1隻試到9隻。這裡需要注意的是「range(1, heads)」這個函式代表的是「從1到heads-1」,也就是「從1到10-1隻」。

    【步驟 3】

    再來,我們用第二層的「for」來定義兔(rabbits)的數量。和剛剛相同,也是從1隻試到9隻。

    for rabbits in range(1, heads):

    這種「迴圈包迴圈」的方式叫做「雙重迴圈」,可以讓之後的程式執行9x9=81次,也就是「1到9隻雞」與「1到9隻兔」的所有排列組合。

    從第四行程式,也就是這個步驟裡的 for 迴圈開始,每一行開頭都比前一行了四個空白,這叫「縮排」,縮排的程式碼代表它屬於前面一行程式碼的子項目。如果暫時看不懂沒有關係,記住這個規則就好。而且,右邊的輸入區會自動縮排,所以這整個練習我們都不必手動縮排。
    【步驟 4】

    根據題目,雞加兔總共有10個頭、24隻腳。因為每隻雞有2隻腳,每隻兔有4隻腳,所以我們可以列出以下程式碼:

    if chickens + rabbits == heads and chickens * 2 + rabbits * 4 == legs:

    print('雞:', chickens, '兔:', rabbits)

    在迴圈中,程式會檢查頭的總數與腳的總數是否符合預設的條件,當條件符合時,就把雞與兔的數量印出來。同樣的,這裡的「if」也需要縮排。

    請注意這裡的「等於」用的是「==」,
    而數字相乘是用「*」符號。
    【完成!】

    現在,我們已經完成雞兔同籠的程式了,試著按下輸入框上方右側的「run」讓程式跑跑看吧,你也可以把頭和腳的數量改變之後再跑一次。程式是不是簡單又好玩啊?: D

    答案請見:

    #:井字號後面的部份是「註解」,執行的時候會被自動忽略,讀者撰寫時可以直接跳過不要輸入。


    分享看答案
    上一步
    1 / 6
    下一步