Re: [問題] 請問如何產生N個名稱

看板Python作者 (紅氣球雯雯)時間9年前發表 (2016/01/21 14:19), 9年前編輯推噓2(208)
留言10則, 3人參與, 最新討論串2/3 (看更多)
謝謝Neisseria大介紹globals函數讓我解決了幫球自動取名的問題 但又碰上新的問題, 我希望在每一個迴圈中,自動把每個球的位置塞入新的list中, 好讓我可以每個迴圈重新計算球與球間的距離。 若不用迴圈我會這樣寫: b_new_pos_list = [] b_new_pos_list.append(ball_0.pos) b_new_pos_list.append(ball_1.pos) b_new_pos_list.append(ball_2.pos) b_new_pos_list.append(ball_3.pos) 相同的,我想利用for loop自動把每個球的位置放入b_new_pos_list中 因此我嘗試這樣寫。 b_new_pos_list=[] for N in range(0,4,1): b_new_pos_list.append(ball_N.pos) 但當然還是不行,因為系統沒辦法自動判斷出ball_N.pos指的就是 ball_0~3.pos 再次感謝。 -- PS:有板友再問我為何要做這些事情,是因為我想用python寫高中物理的模擬 想讓每個球能獨立運動,且討論球間的受力關係(所以需要每次迴圈確定球間距離) 而球的數量要超過100顆,才需要用迴圈寫,謝謝。 ※ 引述《lefan (紅氣球雯雯)》之銘言: : 小弟第一次在python問問題,由於不是學程式的,問題問的不好請見諒 : balllist = [] : position = [1.0, 0.75, 0.5, 0.25] : for po in position: : balllist.append(sphere(pos=vector(-L*cos(th)*po, L*sin(th)*po, 0.6-po), : radius = size, color=color.red)) : ball_0=balllist[0] : ball_0.v = vector(0.0, 0.0, 0.0) : ball_1=balllist[1] : ball_1.v = vector(0.0, 0.0, 0.0) : ball_2=balllist[2] : ball_2.v = vector(0.0, 0.0, 0.0) : ball_3=balllist[3] : ball_3.v = vector(0.0, 0.0, 0.0) : 以上是我在balllist中放入四個球體的位置尺寸顏色, : 再把他們分別放入ball_0,ball_1,ball_2,ball_3 : 我想利用for loop 自動產生N個名稱如上述寫法 : for N in range(0,4,1): : ball_N=balllist[N] : ball_N.v = vector(0.0, 0.0, 0.0) : 但當然不行,因為沒辦法讓程式自動判定ball_N是ball_0 ~ ball_3 : 希望有強大的板友幫忙,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.242.172 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1453385944.A.F39.html ※ 編輯: lefan (1.161.242.172), 01/21/2016 22:22:53

01/21 22:49, , 1F
跑模擬用普通python list跑會很慢喔...
01/21 22:49, 1F

01/21 22:58, , 2F
你的目的應該是N-body simulation 有很多資源可以找
01/21 22:58, 2F

01/21 23:00, , 3F
隨便google了一個 https://goo.gl/4ZZmaL
01/21 23:00, 3F

01/21 23:01, , 4F
裡面有討論基本N個球在重力影響下計算軌跡的例子
01/21 23:01, 4F

01/21 23:01, , 5F
先參考看看
01/21 23:01, 5F

01/21 23:06, , 6F
好的,感謝。
01/21 23:06, 6F

01/21 23:30, , 7F
不好意思,看完painkiller大的例子,還是不知道如何解決我
01/21 23:30, 7F

01/21 23:30, , 8F
的問題 0rz..
01/21 23:30, 8F

01/22 00:21, , 9F
我大概有概念了,謝謝painkiller大
01/22 00:21, 9F

01/24 20:26, , 10F
Vpython?
01/24 20:26, 10F
文章代碼(AID): #1MeEZOyv (Python)
文章代碼(AID): #1MeEZOyv (Python)