Python:'Vec2D'对象不支持项目分配

时间:2013-12-01 04:07:17

标签: python rounding turtle-graphics

从我上一个问题开始的后续工作,但又多样化,迫使我开始一个新的主题。我需要在Python龟模块中对由乌龟制作的点的坐标进行舍入,我尝试这样做的任何方式都会给我TypeError: 'Vec2D' object does not support item assignment

我有usedpositions: [[(-100.00,-0.00), 1], [(0.00,0.00), 2], [(100.00,0.00), 1]],其中每个子列表中的第0项是coords,而且,长话短说,我需要对它进行舍入。

我尝试的第一种方法是

for upsublist in usedpositions:
    upsublist[0][0] = round(upsublist[0][0], 2)
    upsublist[0][1] = round(upsublist[0][1], 2)

这返回了上述错误,

也是如此
for upsublist in usedpositions:
    zeroth = round(upsublist[0][0], 2)
    first = round(upsublist[0][1], 2)
    upsublist[0][0] = zeroth
    upsublist[0][1] = first

所以,我只是想找到一种简洁的方法将x和y坐标四舍五入到两位小数。任何帮助赞赏。

1 个答案:

答案 0 :(得分:2)

Vec2D是不可变的;您可以使用包含圆角坐标的新矢量替换Vec2D实例,但不能修改原始实例。

upsublist[0] = turtle.Vec2D(round(upsublist[0][0], 2), round(upsublist[0][1], 2))