python - blockmanage() 接受 1 个位置参数,但在将数组提供给函数时给出了 36 个
问题描述
我正在学习 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])
推荐阅读
- vba - 有没有办法为表单的上下文写入/编辑一个只读的 Recordset 并使用数据?
- c# - 刷新和清除 Oxyplot 模型
- jsf - 阶段执行期间抛出异常:javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@7c8ce10f]
- reactjs - React Native:切换/(取消)隐藏组件 - 有条件的
- vb.net - 与电脑的竞争
- permissions - DNN 文件管理器在上传文件时显示“无权限”错误
- docx4j - w:t 不是 org.docx4j.wml.Text 的实例?
- excel - 使用excel宏删除PowerPoint幻灯片中的所有图表
- qt - 如何获取 QTreeWidgetItem 数据?
- google-cloud-platform - GCP 通过 API 为 Bitbucket 设置 Cloud Build Trigger