簡體   English   中英

在另一個函數中使用一個函數中的變量然后調用它

[英]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)
  • 從本質上講,我比要求的更極端,因為我只是喜歡把事情復雜化,這讓我學得更好。
  • 但我想提示用戶輸入坐標點 (x, y),然后讓他們輸入圓心的坐標點。 然后我希望他們定義一個半徑。
  • 畢竟,我想通過計算距離的“pointCalc”函數運行坐標點和中心坐標點。
  • 然后,我想使用位於“pointCalc”函數中的“距離”變量,並將其插入到“inCircle”函數的 if/else 語句中,以查看“半徑”是否大於、小於、等於等...並打印出 if/else 語句中的消息。
  • 我知道當我調用“inCircle”的函數時,我需要使用第一個參數“point”。 我只是不知道如何繞過它,當我嘗試在調用時定義它時它不起作用。

所以本質上你想把一個函數中計算出的變量傳遞給另一個函數?

那么正確的做法(在大多數編程語言中)是從函數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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM