問:雞兔同籠,籠中總共有10個頭、24隻腳,請問雞和兔各有多少隻?
答:由於人類的計算能力有限,傳統來講,雞兔同籠這個題目都是以代數來解。但是因為電腦可以快速運算,所以我們可以用最笨的方法——暴力窮舉法把所有的情況算過一次。(準備好了嗎?請按「下一步」)
問:雞兔同籠,籠中總共有10個頭、24隻腳,請問雞和兔各有多少隻?
答:由於人類的計算能力有限,傳統來講,雞兔同籠這個題目都是以代數來解。但是因為電腦可以快速運算,所以我們可以用最笨的方法——暴力窮舉法把所有的情況算過一次。(準備好了嗎?請按「下一步」)
首先,我們要定義頭(heads)和腳(legs)這兩個變數。根據題目,籠子裡總共有10個頭、24隻腳,所以先寫「heads=10」、「legs=24」。
heads = 10
legs = 24
大家可以在右方的輸入框裡輸入以上兩行程式碼(稍後待程式完成後可按下「run」讓程式跑跑看),然後按「下一步」。
接著,我們用「for」這個指令來定義雞(chickens)這個變數。
for chickens in range(1, heads):
這裡是一個迴圈,會讓之後的程式碼被整整跑過9次,也就是雞的數量會從1隻試到9隻。這裡需要注意的是「range(1, heads)」這個函式代表的是「從1到heads-1」,也就是「從1到10-1隻」。
再來,我們用第二層的「for」來定義兔(rabbits)的數量。和剛剛相同,也是從1隻試到9隻。
for rabbits in range(1, heads):
這種「迴圈包迴圈」的方式叫做「雙重迴圈」,可以讓之後的程式執行9x9=81次,也就是「1到9隻雞」與「1到9隻兔」的所有排列組合。
根據題目,雞加兔總共有10個頭、24隻腳。因為每隻雞有2隻腳,每隻兔有4隻腳,所以我們可以列出以下程式碼:
if chickens + rabbits == heads and chickens * 2 + rabbits * 4 == legs:
print('雞:', chickens, '兔:', rabbits)
在迴圈中,程式會檢查頭的總數與腳的總數是否符合預設的條件,當條件符合時,就把雞與兔的數量印出來。同樣的,這裡的「if」也需要縮排。
現在,我們已經完成雞兔同籠的程式了,試著按下輸入框上方右側的「run」讓程式跑跑看吧,你也可以把頭和腳的數量改變之後再跑一次。程式是不是簡單又好玩啊?: D
答案請見: