[英]Using a Variable from One Function Inside Another Function then Calling It
# 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)
所以本質上你想把一個函數中計算出的變量傳遞給另一個函數?
那么正確的做法(在大多數編程語言中)是從函數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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.