我们被迫对某项简单的事情使用多个函数,以了解抽象的好处。但是我相信这不必要地使事情复杂化(尽管我知道什么?)。我的主要复合函数调用缺少位置参数。
除了使函数返回列表而不是元组之外,我没有做太多尝试,但无济于事。
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'
请派遣训练有素的猴子协助。
答案 0 :(得分:0)
您可以使用starred expression将元组的元素作为单独的参数传递给函数,因为您的square_rooter
函数需要两个参数:
print(square_rooter(*calculations(var1, var2, var3, var4)))