龜兔賽跑,第一回合兔子因為太輕敵,在半路上呼呼大睡睡過頭,輸了比賽。
雖然輸了第一回合的比賽,不過兔子並沒有灰心喪志,牠記取教訓,買了個功能齊全的運動手錶來戴,睡覺前先定好鬧鐘時間,這樣就不怕睡過頭而輸了比賽。從此龜兔賽跑,兔子照樣在半路上睡覺補充體力,但再也沒有因為睡過頭而輸了比賽。
連續大敗數場後,烏龜終於忍不住了,牠向大會抗議,認為使用科技產品,會因為貧富差距而形成不公平競爭,最後比賽賽跑會變成比賽誰比較有錢,因此要求禁止兔子使用運動手錶。大會同意了。之後兔子因為沒有鬧鐘叫牠,三不五時會睡過頭,所以龜兔賽跑互有輸贏,呈現五五波的態勢。
比賽持續舉辦,但專家們卻發現,兔子的勝率越來越高。這現象實在令人不解,因為兔子還是照常在半路上睡覺補充體力,而睡過頭的比例也沒有特別的變化,那為什麼贏的次數會越來越多?
利用人工智慧探索大數據,專家們終於解開了這個謎團。原來,現在除了統一發票之外,還有大樂透、威力彩、今彩539、39樂合彩、三星彩、四星彩、雙贏彩,甚至於還有馬上買馬上開獎的刮刮樂,所以摃龜的人幾乎無所不在。這導致了往往烏龜眼看就要越過終點線贏得比賽,卻被敲翻在地,只能四腳朝天,眼睜睜地從日落等到月兒高掛天空,看著睡飽後神清氣爽的兔子,在一片銀色月光下,精神抖擻地跨過終點線。烏龜面對這殘酷的事實,也只能乾瞪眼,徒呼奈何。
一直以來就對絢爛繽紛的fractal圖案很著迷,既然正在學Python,那何不也用來畫一畫,練習程式之餘,也可以生出一些漂亮的圖案。
在Python裡頭,有個畫圖用的module,名字挺可愛的,就是大名鼎鼎的turtle。它本來是Logo程式語言中的一部份,用來教小孩子寫程式。既然是給小孩子入門用的,所以用法非常簡單,很容易就可以上手。網路上找了幾篇文章稍微看一下,搭配官網的說明文件,寫個簡單的程式實際跑跑看。
有時候人算不如天算,越是認為簡單的事越容易出狀況,明明就是簡單沒幾行的程式,就給你出現莫名其妙讓人傻眼的詭異症狀。什麼詭異症狀呢?用一句話來描述,就是:有一沒有二。程式跑第一遍的時候,一切都正常,沒有任何問題,該出現的圖案都正常顯示。可是要再跑一遍的時候,即使程式都沒改動,卻就是卡死,一動也不動。最後不得已,只好強制把顯示圖案的畫布關掉。畫布關是關掉了,可是Python的kernel也會跟著重啟,只能乾瞪眼等重啟完再繼續。本來在想會不會是版本的問題,有些指令已經淘汰了,但是網路上很多文章並未更新,這種情況還蠻常見的。可是即使是只用官網上最新版本、最單純的一個畫線指令,它還是照常有一沒有二。這顯然不是程式的問題了。
怎麼辦咧?當然是網路上找答案啊!
是啊!網路上找答案,多麼有智慧的一句話!就像新冠疫情期間,餐飲業一片哀鴻遍野,專家都會說:要做出差異化、要有特色,這樣就能生存下去。這話有說等於沒說。誰不知道要差異化、要有特色?問題是,要怎麼做啊?或許專家在媒體上說給大家知道的,是他的免費服務的部分,至於要怎麼做的部分,那就要收費了。專家也是人,也是要過活的。
言歸正傳,要用哪些關鍵字搜尋呢?只用單純一個「turtle」來找,顯然不行。再加上「Python」,用兩個字找也不行,會有滿坑滿谷的教學文章排在前面,根本就不知道要從何看起。那到底要用什麼關鍵字搜尋呢?就是不知道問題出在哪,所以才要搜尋找答案;可是不知道問題出在哪,又怎麼會知道要用什麼關鍵字來找?這簡直就是在雞生蛋、蛋生雞、鬼打牆。
正當腦袋打結逐漸要當機的時候,不經意地,工作列按鈕中的「Spyder」映入眼簾。Spyder這個字,到底是哪一國的語言啊?英文的spider是蜘蛛的意思,Google翻譯系統偵測說Spyder是英文,也是蜘蛛的意思,難怪Spyder這個IDE的logo是一個「S」掛在蜘蛛網上。所以現在就是用蜘蛛和烏龜在畫圖就是了,烏龜曾經和兔子比賽賽跑,不知道烏龜和蜘蛛賽跑誰會贏……心思就這麼不經意地神遊太虛,也才在神遊中,看到龜兔賽跑的後續發展。
看完龜兔賽跑,一回神,飛快地敲進Spyder、turtle兩個字搜尋。嘿!果然找到了!
網路上有不少這個問題的討論,也有不少建議的解決方式。原本在程式的最後會寫turtle.done(),這也是大部分文章範例的寫法。不過那些範例並不會詳列執行環境,所以放到不同的環境中,就可能出現不同的問題。有人建議調整Spyder的設定,不過這招試過沒用,而且實在挺不喜歡這樣的解決方式,因為萬一有其他問題需要調整同一個設定項目才能解決,而這兩個調整方式卻互相衝突,那不就GG了?最後發現,最簡單的最有效,只要在turtle.done()之後再加上一行turtle.bye()就可以了。
總算,蜘蛛和烏龜可以相親相愛一起工作,不會再有心不甘情不願的情況發生了。可是,不管他們如何相親相愛,還是很想知道,究竟龜蛛賽跑誰會贏啊?