python使用“更新列表中的多个位置”;对于“范围内的x”;

python使用“更新列表中的多个位置”;对于“范围内的x”;,python,list,loops,Python,List,Loops,我正试图写一个游戏,一条蛇在矩阵中移动,用符号占据位置(我野蛮语言中的泰肯)。它会改变蛇的生长量,由p决定,然后你可以决定它是水平生长还是垂直生长,这些信息在b和c中给出。然后我想要的是,我的矩阵将被我的符号更新,然后我的新位置和旧位置之间的所有位置也将被我的符号替换,也就是蛇在那个位置生长。这可能有点难以理解我的意思,但这里有一个for循环,我认为它可以完成这项工作。不幸的是,这并不能填补起始位置和结束位置之间的空白,它只会替换结束位置。有人知道我怎样才能做到这一点吗 for antal

我正试图写一个游戏,一条蛇在矩阵中移动,用符号占据位置(我野蛮语言中的泰肯)。它会改变蛇的生长量,由p决定,然后你可以决定它是水平生长还是垂直生长,这些信息在b和c中给出。然后我想要的是,我的矩阵将被我的符号更新,然后我的新位置和旧位置之间的所有位置也将被我的符号替换,也就是蛇在那个位置生长。这可能有点难以理解我的意思,但这里有一个for循环,我认为它可以完成这项工作。不幸的是,这并不能填补起始位置和结束位置之间的空白,它只会替换结束位置。有人知道我怎样才能做到这一点吗

   for antal in range(p):
                       ormfält.table[self.x-p*b][self.y-p*c] = self.tecken

范围函数为0索引:

>>> p = 3
>>> range(p)
[0, 1, 2]
现在看看你什么时候打开你的循环;您更改了3个字段,但其中一个字段是您已在的字段

snakefield.table[self.x - 0 * b][self.y - 0 * c] = self.sign  # <-- this one
snakefield.table[self.x - 1 * b][self.y - 1 * c] = self.sign
snakefield.table[self.x - 2 * b][self.y - 2 * c] = self.sign

如果你用一种非野蛮的语言为变量提供了全面的名称(并且缩小了文本墙),那么回答你的问题就更容易了。不管怎么说,看起来你在改变相同的值
p
次,因为你没有在循环中使用
antal
,你帮了我很多!我刚把安塔尔换成了p,然后它似乎起作用了。但它并没有像p=3时那样执行3步,而是更新了p=2时的2步。知道为什么吗?我的英文代码是:对于范围(p)中的p(我想走的步数):snakefield.table[self.x-pb][self.y-pc]=self.sign非常感谢!我直到现在才看到你的回复,实际上我设法弄明白了,但你对此有一个很好的解释^^
>>> range(1, p + 1)
[1, 2, 3]