首页 > 解决方案 > 在另一个函数中使用一个函数中的变量然后调用它

问题描述

# Write a function inCircle that takes a point and a radius as a parameter. 
# The function should return True if the point is inside the circle and False otherwise.

import math


# Function for distance equation
def pointCalc(x1, y1, x2, y2):
    distance = math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2))


# Function for whether or not coordinate points are in the in/on the circle
def inCircle(point, radius):
    """Function that returns whether point is inside a circle"""
    if pointCalc.distance >= radius:
        print(f"Point ({pointCalc.x1},{pointCalc.x2}) is not in circle with radius {radius}")
    else:
        print(f"Point ({pointCalc.x1},{pointCalc.x2}) is in circle with radius {radius}")


# Prompt user for inputs on coordinate points, center, and radius
print("Enter coordinate points:")
print("---------------------------------------------")
point_x = float(input("Enter a x-coordinate point: "))
point_y = float(input("Enter a y-coordinate point: "))

print("\nEnter coordinate points for the center:")
print("---------------------------------------------")
center_x = float(input("Enter a x-coordinate point for the center: "))
center_y = float(input("Enter a y-coordinate point for the center: "))

r = float(input("\nEnter radius for the circle: "))


# Call functions
pointCalc(point_x, point_y, center_x, center_y)
inCircle(radius=r)

标签: pythonpython-3.x

解决方案


所以本质上你想将一个函数中计算的变量传递给另一个函数?

那么正确的方法(在大多数编程语言中)是return从函数中获取值。您没有return在函数中使用,并且无法通过以下语法访问另一个函数内部的变量func.variable- 函数不是对象(某种),并且一旦函数终止,它声明的变量就会被销毁。

所以在你的情况下:

# Function for distance equation
def pointCalc(x1, y1, x2, y2):
    return math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2))


# Function for whether or not coordinate points are in the in/on the circle
def inCircle(distance, radius):
    """Function that returns whether point is inside a circle"""
    if distance >= radius:
        print(f"Point ({pointCalc.x1},{pointCalc.x2}) is not in circle with radius {radius}")
    else:
        print(f"Point ({pointCalc.x1},{pointCalc.x2}) is in circle with radius {radius}")

# ...

# Call functions
d = pointCalc(point_x, point_y, center_x, center_y)
inCircle(distance=d, radius=r)

推荐阅读