缺少位置参数

时间:2019-09-03 19:22:32

标签: python-3.x

我们被迫对某项简单的事情使用多个函数,以了解抽象的好处。但是我相信这不必要地使事情复杂化(尽管我知道什么?)。我的主要复合函数调用缺少位置参数。

除了使函数返回列表而不是元组之外,我没有做太多尝试,但无济于事。

import math


def calculations(x1, x2, y1, y2):
    difsqx = (x2 - x1) ** 2
    difsqy = (y2 - y1) ** 2

    return difsqx, difsqy


def square_rooter(difsqx, difsqy):
    distance = math.sqrt(difsqx + difsqy)

    return distance


def main():
    var1 = float(input("Enter an x1 value: "))
    var2 = float(input("Enter an x2 value: "))
    var3 = float(input("Enter a y1 value: "))
    var4 = float(input("Enter a y2 value: "))
    print(square_rooter(calculations(var1, var2, var3, var4)))


if __name__ == "__main__":
    main()

我期望得到(x1&x2),(y1&y2)之间的距离,但是我遇到了这个错误。

Traceback (most recent call last):
  File "C:/Users/devon/PycharmProjects/Data Structures/In-Class Work/Cartesian Distance.py", line 31, in <module>
    main()
  File "C:/Users/devon/PycharmProjects/Data Structures/In-Class Work/Cartesian Distance.py", line 27, in main
    print(square_rooter([calculations(var1, var2, var3, var4)]))
TypeError: square_rooter() missing 1 required positional argument: 'difsqy'

请派遣训练有素的猴子协助。

1 个答案:

答案 0 :(得分:0)

您可以使用starred expression将元组的元素作为单独的参数传递给函数,因为您的square_rooter函数需要两个参数:

print(square_rooter(*calculations(var1, var2, var3, var4)))