作者lefan (红气球雯雯)
看板Python
标题Re: [问题] 请问如何产生N个名称
时间Thu Jan 21 22:18:59 2016
谢谢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://webptt.com/cn.aspx?n=bbs/Python/M.1453385944.A.F39.html
※ 编辑: lefan (1.161.242.172), 01/21/2016 22:22:53
1F:推 painkiller: 跑模拟用普通python list跑会很慢喔... 01/21 22:49
2F:推 painkiller: 你的目的应该是N-body simulation 有很多资源可以找 01/21 22:58
4F:→ painkiller: 里面有讨论基本N个球在重力影响下计算轨迹的例子 01/21 23:01
5F:→ painkiller: 先参考看看 01/21 23:01
6F:→ lefan: 好的,感谢。 01/21 23:06
7F:→ lefan: 不好意思,看完painkiller大的例子,还是不知道如何解决我 01/21 23:30
8F:→ lefan: 的问题 0rz.. 01/21 23:30
9F:→ lefan: 我大概有概念了,谢谢painkiller大 01/22 00:21
10F:→ edisonhello: Vpython? 01/24 20:26