如何将输入作为列表发送到函数?

时间:2017-11-09 18:14:56

标签: python

我试图将输入传递给函数但我的代码有问题。

我有每个点的(x,y)坐标的位置。

如果有人帮我修改我的程序,我将不胜感激。

def distance(ball1,ball2):
  d=(((ball2[0]-ball1[0])**2)+((ball2[1]-ball1[1])**2))**(1/2)
  print(float(d))
ball1=[2,10]
ball2=[3,5]
distance(ball1,ball2)

错误已修复,但输出不准确,结果始终为1。

请你帮我解决一下吗?感谢

4 个答案:

答案 0 :(得分:1)

问题是您使用ball2访问ball2[2]中的第三个元素。但是,列表中只有两个元素。您需要将其更改为ball2[1]-ball1[1]

def distance(ball1=[],ball2=[]):
  d=(((ball2[0]-ball1[0])**2)+((ball2[1]-ball1[1])**2))**(1/2)
  print(d)

答案 1 :(得分:0)

def distance(ball1=[], ball2=[]):
    d = (((ball2[0] - ball1[0]) ** 2) + ((ball2[1] - ball2[1]) ** 2)) ** (1 / 2)
    print(d)


ball1 = [1, 1]
ball2 = [3, 3]
distance(ball1, ball2)

答案 2 :(得分:0)

您无法访问第三个元素。

代码:

def distance(ball1=[],ball2=[]):
  d=(((ball2[0]-ball1[0])**2)+((ball2[1]-ball1[1])**2))**(1/2)
  print(d)
ball1=[1,1]
ball2=[3,3]
distance(ball1,ball2)

答案 3 :(得分:0)

1结果是由于分裂。

在Python 2中,1/2使用0结果进行整数除法。

在Python 3 1/2中,作品计算为0.5

只需在代码中将1/2替换为0.5