一個關於for loop和list的小實驗

更新於 2023/07/17閱讀時間約 2 分鐘

「蛤?!居然當機!」瞪著畫面凍結的螢幕,心裡一面嘀嘀咕咕,一面敲著鍵盤,企圖死馬當活馬醫,看看能不能免去重開機的麻煩。

一切的努力都是徒然,這是徹底的當機!滑鼠、鍵盤完全失去作用,只餘關電源強迫關機一條路可走。

在重開機的當兒,一面看著螢幕有沒有顯示異常的訊息,一面開始分析可能的當機原因。

慘案是在開始執行程式沒多久之後發生的,所以是程式有問題導致的可能性最大。不過,程式其實很簡單,就是讓在畫面上彈彈跳跳的球,當碰到畫面邊界時,就會分裂成為兩顆。除了pygame之外,也沒用到什麼特別的東西,實在是很難想到導致當機的原因。

開機完成,開啟spyder的時候,滿腦子還是剛剛執行程式的畫面。一顆球碰到邊界分裂成兩顆,然後分別沿著不同的方向和路徑彈開。這兩顆球碰到邊界時,又繼續分裂……

「咦?!該不會是因為球的數量太多,導致資源被吃光而當機吧?畢竟那是以等比級數增加的數量,這個可能性很大!」

打開程式,在程式裡頭加了個限制球的數量的條件,同時也修正了另一個錯誤:傳入函數的參數,本來該是tuple,結果傳成pygame.Vector2物件。雖然已先想到程式可能導致問題的原因,但在debug時,還是應該看看是不是有其他錯誤。

程式修改之後,執行起來都沒什麼問題,一堆球在畫面上彈彈跳跳好不快活。這個程式的功能在寫生態系統的人工生命時,可以當作人工生命繁殖功能的基礎。一顆球在某個條件下會變成兩顆,這不就是生命的繁衍嗎?

雖然程式已經可以正常執行,但是不該就此滿足,應該來看看到底球的數量的上限是多少。生命繁殖歸繁殖,但也不可能無限制的增加數量,畢竟資源有限。

試著把球的數量往上調,但很妙的是,儘管球的數量越調越大,但造成的影響,就只是球的移動速度越來越慢,完全不會當機!看來傳錯參數,才是真正導致當機的原因。

在研究球的數量會造成的影響時,又冒出另一個疑問:下面這個程式執行的結果會是什麼?

a = [1, 2, 6, 7]
for i in a:
if i < 5 and len(a) < 10:
a.append(i)
print(a)

是會印出

[1, 2, 6, 7, 1, 2]

還是

[1, 2, 6, 7, 1, 2, 1, 2, 1, 2]


這個疑問,用比較科幻式的陳述方式,就是在問:一個群體中的某些個體在特定條件下會自我複製。如果不強制限制這個群體的個體數量,那這個群體會不會無限制的擴張?

執行程式所印出的a值是後者。所以,會!如果不加以限制,這個群體會無限制的擴張。

為什麼會這樣子?那可能要問Python的創造者為什麼要這樣子設計了。

avatar-img
15會員
130內容數
寫點東西自娛娛人
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
ysf的沙龍 的其他內容
看來這應該是pygame的bug,而不是自己寫的程式有問題。為了進一步證實這個猜測,重寫了一個單純只畫出圓球的程式,除了畫出不同位置的圓球之外,沒有任何其他作用
俗話說「萬事起頭難」還真是一點也沒錯,從開始動筆寫《The Nature of Code閱讀心得筆記——使用Python實作》,到寫完頭一章,再到把文章放上網站開始發表,總共隔了快三個月的時間。
不知道為什麼,原本相安無事的兩個人,突然間看對了眼,開始出雙入對、形影不離。這除了讓人看了很不順眼之外,也很浪費時間。雖然想盡辦法要拆散他們,但都沒成功。逼不得已,只好狠下心來,冒險將一切抹除,讓他們走完「成、住、壞、空」最後的階段,輪迴至下一輪的「成、住、壞、空」。只是沒想到
天啊!怎麼這麼混亂!網路上有一卡車的文章在談class、object、instance有什麼不同;在Stack Overflow中,關於object和instance間的差異,也一再有人問起。只是啊只是,看了一大堆的討論、解釋,似乎是懂了,但又總覺得不踏實,就好像漂蕩在太空中,明明目標就在眼前,但無
在Python官網的Glossary第一次看到「duck typing」這個詞的時候,真的是很疑惑:Python怎麼會跟鴨子扯得上關係?更疑惑的是,那還是隻會打字的鴨子!
利用L-system畫出來的fractal圖案,最大的特色就是,橫看、豎看、左看、右看,全都一個樣,所以感覺總是不自然。就拿畫樹木來說吧,即便樹枝長度可以不一樣長,但是分岔的角度卻都一樣。所以囉,乍看之下,挺像一棵樹的,但仔細看的話,卻總覺得哪裡怪怪的,太人工化了。那怎麼讓它自然一些呢?
看來這應該是pygame的bug,而不是自己寫的程式有問題。為了進一步證實這個猜測,重寫了一個單純只畫出圓球的程式,除了畫出不同位置的圓球之外,沒有任何其他作用
俗話說「萬事起頭難」還真是一點也沒錯,從開始動筆寫《The Nature of Code閱讀心得筆記——使用Python實作》,到寫完頭一章,再到把文章放上網站開始發表,總共隔了快三個月的時間。
不知道為什麼,原本相安無事的兩個人,突然間看對了眼,開始出雙入對、形影不離。這除了讓人看了很不順眼之外,也很浪費時間。雖然想盡辦法要拆散他們,但都沒成功。逼不得已,只好狠下心來,冒險將一切抹除,讓他們走完「成、住、壞、空」最後的階段,輪迴至下一輪的「成、住、壞、空」。只是沒想到
天啊!怎麼這麼混亂!網路上有一卡車的文章在談class、object、instance有什麼不同;在Stack Overflow中,關於object和instance間的差異,也一再有人問起。只是啊只是,看了一大堆的討論、解釋,似乎是懂了,但又總覺得不踏實,就好像漂蕩在太空中,明明目標就在眼前,但無
在Python官網的Glossary第一次看到「duck typing」這個詞的時候,真的是很疑惑:Python怎麼會跟鴨子扯得上關係?更疑惑的是,那還是隻會打字的鴨子!
利用L-system畫出來的fractal圖案,最大的特色就是,橫看、豎看、左看、右看,全都一個樣,所以感覺總是不自然。就拿畫樹木來說吧,即便樹枝長度可以不一樣長,但是分岔的角度卻都一樣。所以囉,乍看之下,挺像一棵樹的,但仔細看的話,卻總覺得哪裡怪怪的,太人工化了。那怎麼讓它自然一些呢?
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
雙年展引人注目的部分往往在光環下標示出的焦點,無論是策展人、主題、參展作家也好,有了雙年展的加持,彷彿獲得當代藝術成就的認同。臺灣的陶藝雙年展2004年一開始只有競賽展,競賽的結果由評審團共同決定:從數千件至數百件的作品當中,投票挑選出百件作品,由於評審們都是業界各領域的專家與學者,即使各自對於美學
Thumbnail
我家孩子從小就睡得很沉,不僅完全聽不見鬧鐘的聲音,有時甚至連輕拍孩子的手臂、搖晃孩子的肩膀,他們還是醒不過來,真讓我萬般無奈。某天,我想到一個點子,來一場「音樂實驗」,看看放到哪一首歌曲時,孩子會自動醒來...
Thumbnail
2022年的第一天,來講講酒店的故事。 這就是第一次到酒店的經驗,滿有趣的,後來因為工作關係,曾再去過幾次,有了第一次的經驗,就沒有那麼緊張,可以輕鬆地和服務生小姐們聊聊天,玩團康遊戲。 喝酒不是一件壞事,但要量力而為~~~什麼該喝、該做、該說,自己心裡要有一個底。
Thumbnail
吳軍博士的五個金錢觀: (1)錢是上帝存在我們這裡的 (2)錢花出去才是我們的 (3)錢是為了使我們變得更好,而不是帶來麻煩 (4)錢是賺來的,不是省來的,賺錢的效率取決於氣度 (5)錢花不光,卻可以迅速投光
Thumbnail
去年,我在Netflix上看了改編自森見登美彥老師的小說、湯淺政明導演的動畫《四疊半神話大系》,跟隨著高中生主角一次次地選擇不同的社團、經歷大大小小相似卻錯置的事件,最終迎向早在第一話就揭示的大結局。在今年甫出版的新作《熱帶》中,主角一樣從他四疊半的書房出發,展開一段關於「閱讀」的奇幻旅程。
Thumbnail
• Friday 上週五(11/6)颱風來臨前,參加由成大STM中心主辦的「船在海上:精神健康座談會」,邀請鏡文學採訪主任胡慕情、新竹馬偕醫院精神科吳易澄主治醫師、成大醫學系畢業目前在精神科診所服務謝佩君精神科醫師、以及成大臨床醫學研究中心與高齡醫學部劉介修主治醫師共同座談,由成大醫學系謝世洲主任主
Thumbnail
還記得小時候的夢想嗎?相信每個人在小時候都有個夢想,長大後想當老師、發明家、有錢人,又或者是想要住在一個大大的房子裡。因為那時還是孩子的我們不懂什麼是夢想,總是跟大人說著天真的想法。長大後漸漸懂得夢想是什麼,更知道自己所想追尋的目標,也會更努力地想要將它實現。
Thumbnail
我們耗了半個下午,終於在五年級下學期(第十冊)課本某一頁,找到一張與「同性戀」有關的小插圖!礙於公司規定及職場倫理,當時我無法用手機把它拍下,現在只能依靠別人拍的圖,在此用簡短的文字敘述,那個小插圖跟課文是這樣的……
我百思不解的是(健康與體育課本)原本的,都是呈現男女外陰部,只是修改前的圖比較小,修改後的圖比較大,為什麼要改呢?而且修改的方法竟然是讓外陰部的生殖器變得更明顯!照理來說,那些要求修改圖片的家長、老師應該是要編輯把兩張圖拿掉,不讓國中生浮想聯翩才對!後來,資深同事告訴我,之所以這樣修改,是因為……
Thumbnail
很多人對於西尾使用包孕體這手法保持很大的意見,認為這樣破壞敘事結構,讓一個故事變得冗長且不有趣。 但筆者覺得,這話說得太早了。 首先先來講什麼是包孕體。 故事中還有一個故事,大概可以這麼簡單介紹。 一千零一夜的故事聽過吧,差不多就像這樣......
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
雙年展引人注目的部分往往在光環下標示出的焦點,無論是策展人、主題、參展作家也好,有了雙年展的加持,彷彿獲得當代藝術成就的認同。臺灣的陶藝雙年展2004年一開始只有競賽展,競賽的結果由評審團共同決定:從數千件至數百件的作品當中,投票挑選出百件作品,由於評審們都是業界各領域的專家與學者,即使各自對於美學
Thumbnail
我家孩子從小就睡得很沉,不僅完全聽不見鬧鐘的聲音,有時甚至連輕拍孩子的手臂、搖晃孩子的肩膀,他們還是醒不過來,真讓我萬般無奈。某天,我想到一個點子,來一場「音樂實驗」,看看放到哪一首歌曲時,孩子會自動醒來...
Thumbnail
2022年的第一天,來講講酒店的故事。 這就是第一次到酒店的經驗,滿有趣的,後來因為工作關係,曾再去過幾次,有了第一次的經驗,就沒有那麼緊張,可以輕鬆地和服務生小姐們聊聊天,玩團康遊戲。 喝酒不是一件壞事,但要量力而為~~~什麼該喝、該做、該說,自己心裡要有一個底。
Thumbnail
吳軍博士的五個金錢觀: (1)錢是上帝存在我們這裡的 (2)錢花出去才是我們的 (3)錢是為了使我們變得更好,而不是帶來麻煩 (4)錢是賺來的,不是省來的,賺錢的效率取決於氣度 (5)錢花不光,卻可以迅速投光
Thumbnail
去年,我在Netflix上看了改編自森見登美彥老師的小說、湯淺政明導演的動畫《四疊半神話大系》,跟隨著高中生主角一次次地選擇不同的社團、經歷大大小小相似卻錯置的事件,最終迎向早在第一話就揭示的大結局。在今年甫出版的新作《熱帶》中,主角一樣從他四疊半的書房出發,展開一段關於「閱讀」的奇幻旅程。
Thumbnail
• Friday 上週五(11/6)颱風來臨前,參加由成大STM中心主辦的「船在海上:精神健康座談會」,邀請鏡文學採訪主任胡慕情、新竹馬偕醫院精神科吳易澄主治醫師、成大醫學系畢業目前在精神科診所服務謝佩君精神科醫師、以及成大臨床醫學研究中心與高齡醫學部劉介修主治醫師共同座談,由成大醫學系謝世洲主任主
Thumbnail
還記得小時候的夢想嗎?相信每個人在小時候都有個夢想,長大後想當老師、發明家、有錢人,又或者是想要住在一個大大的房子裡。因為那時還是孩子的我們不懂什麼是夢想,總是跟大人說著天真的想法。長大後漸漸懂得夢想是什麼,更知道自己所想追尋的目標,也會更努力地想要將它實現。
Thumbnail
我們耗了半個下午,終於在五年級下學期(第十冊)課本某一頁,找到一張與「同性戀」有關的小插圖!礙於公司規定及職場倫理,當時我無法用手機把它拍下,現在只能依靠別人拍的圖,在此用簡短的文字敘述,那個小插圖跟課文是這樣的……
我百思不解的是(健康與體育課本)原本的,都是呈現男女外陰部,只是修改前的圖比較小,修改後的圖比較大,為什麼要改呢?而且修改的方法竟然是讓外陰部的生殖器變得更明顯!照理來說,那些要求修改圖片的家長、老師應該是要編輯把兩張圖拿掉,不讓國中生浮想聯翩才對!後來,資深同事告訴我,之所以這樣修改,是因為……
Thumbnail
很多人對於西尾使用包孕體這手法保持很大的意見,認為這樣破壞敘事結構,讓一個故事變得冗長且不有趣。 但筆者覺得,這話說得太早了。 首先先來講什麼是包孕體。 故事中還有一個故事,大概可以這麼簡單介紹。 一千零一夜的故事聽過吧,差不多就像這樣......