gpt4 book ai didi

python - 编写函数是为了接受成对的变量,有没有办法像在 python 3 中那样编写它们?

转载 作者:行者123 更新时间:2023-11-28 19:23:38 24 4
gpt4 key购买 nike

函数定义为:

def addVectors((angle1, length1), (angle2, length2)):
x = math.sin(angle1) * length1 + math.sin(angle2) * length2
y = math.cos(angle1) * length1 + math.cos(angle2) * length2

angle = 0.5 * math.pi - math.atan2(y, x)
length = math.hypot(x, y)

return (angle, length)

它是这样使用的:

def collide(p1, p2):
dx = p1.x - p2.x
dy = p1.y - p2.y

dist = math.hypot(dx, dy)
if dist < p1.size + p2.size:
angle = math.atan2(dy, dx) + 0.5 * math.pi
total_mass = p1.mass + p2.mass

(p1.angle, p1.speed) = addVectors((p1.angle, p1.speed*(p1.mass-p2.mass)/total_mass), (angle, 2*p2.speed*p2.mass/total_mass))
(p2.angle, p2.speed) = addVectors((p2.angle, p2.speed*(p2.mass- p1.mass)/total_mass), (angle+math.pi, 2*p1.speed*p1.mass/total_mass))
p1.speed *= elasticity
p2.speed *= elasticity

我的问题是 python 3 只会让我将一组括号分配给一个函数,但是这里的例子使用了两个,结果和获取它们的方法是本类(class)的结果。我不确定是否有办法解决这个问题,或者我是否必须重组公式,我真的不确定我是否能够做到。有什么建议吗?此外,我从 Peter Collingridges 关于球物理的教程中获取了这段代码,其余的都在他的网站上 http://www.petercollingridge.co.uk .提前致谢:D

最佳答案

您可以将两个元组分别替换为单个变量,例如:

def addVectors(r1, r2):
x = math.sin(r1[0]) * r1[1] + math.sin(r2[0]) * r2[1]
y = math.cos(r1[0]) * r1[1] + math.cos(r2[0]) * r2[1]

angle = 0.5 * math.pi - math.atan2(y, x)
length = math.hypot(x, y)

return (angle, length)

然后你可以使用 addVectors((0,10),(30,50))

关于python - 编写函数是为了接受成对的变量,有没有办法像在 python 3 中那样编写它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18668137/

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