gpt4 book ai didi

python - blockmanage() 采用 1 个位置参数,但在将数组提供给函数时给出了 36 个

转载 作者:太空宇宙 更新时间:2023-11-04 00:00:36 24 4
gpt4 key购买 nike

我正在学习 pygame,但在“给出”(抱歉,我不确定正确的术语)数组时遇到了麻烦。它说它只接受一个位置参数——下面是完整的错误——它显然不喜欢我给它一个大数组。我花了几个小时试图让线程为此工作,并解决了到目前为止的所有问题,但我不确定从哪里开始。

我真的不知道从哪里开始,只需要一个关于如何纠正错误的简单指南。我尝试将 args=blocks 代码更改为 args=blocks[]。

def blockmanage(blocks):
for block in blocks:
#make a rectangle around ball and block and if they collide continue
if pygame.Rect(block.x, block.y, 50, 20).colliderect(self.x - 10, self.y -10, 20, 20):
#reverse ball direction
self.dy *= -1

#remove the block being iterated through.
blocks.remove(block)

blocks = []

for y in range(50, 350, 50):
for x in range(25, 360, 60):
blocks.append(Block(x, y, colours[i]))
i += 1

thread1 = threading.Thread(target = blockmanage, args=(blocks))
thread1.start()

预期的结果是它接受数组作为参数。

最佳答案

args 参数的值被认为是要传递给目标函数的所有参数的列表,因此 blocks 的每个元素都被视为一个单独的论点。您需要将其包装在另一个列表中。

thread1 = threading.Thread(target = blockmanage, args=[blocks])

关于python - blockmanage() 采用 1 个位置参数,但在将数组提供给函数时给出了 36 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55856470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com