首页 > 解决方案 > 缺少位置参数

问题描述

我们被迫使用多个函数来完成一些简单的任务,以了解抽象的好处。然而,我相信这不必要地使事情复杂化(但我知道什么?)。不过,我的主要复合函数调用缺少位置参数。

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

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'

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

标签: python-3.x

解决方案


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

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

推荐阅读