Python跨函数调用变量实现点在圆内判断的问题咨询
Python inCircle 函数问题修复方案
核心问题定位
- 函数局部变量无法跨作用域访问:
pointCalc中计算的distance是函数内部局部变量,函数执行结束后就会销毁,且原代码没有给函数设置返回值,外部自然无法获取计算结果 - 参数传递不符合要求:
inCircle定义要求传入point和radius两个参数,原代码调用时只传了radius,且原有交互逻辑还缺少圆心坐标的参数传递
修复后完整代码
import math # 计算两点之间的距离,返回计算结果 def pointCalc(x1, y1, x2, y2): return math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2)) # 兼容两种需求:默认圆心为原点(0,0),支持自定义传入圆心参数 def inCircle(point, radius, center=(0,0)): """判断点是否在圆内(包含边界),返回True/False""" distance = pointCalc(point[0], point[1], center[0], center[1]) if distance <= radius: print(f"点({point[0]},{point[1]})在半径为{radius}的圆内/边界上") return True else: print(f"点({point[0]},{point[1]})不在半径为{radius}的圆内") return False # 交互输入部分 print("输入待测点坐标:") print("---------------------------------------------") point_x = float(input("输入待测点x坐标: ")) point_y = float(input("输入待测点y坐标: ")) target_point = (point_x, point_y) print("\n输入圆心坐标:") print("---------------------------------------------") center_x = float(input("输入圆心x坐标: ")) center_y = float(input("输入圆心y坐标: ")) center_point = (center_x, center_y) r = float(input("\n输入圆的半径: ")) # 调用函数,传入所有必要参数 inCircle(point=target_point, radius=r, center=center_point)
关键修改说明
- 给
pointCalc增加返回值,直接将计算得到的距离返回,调用时直接接收返回值即可使用 - 调整
inCircle参数,给圆心设置默认值(0,0),既符合最初「仅接收点和半径参数」的要求,也支持自定义圆心的扩展需求;同时将点坐标用元组格式传递,符合常规的点参数定义规范 - 调用函数时将用户输入的待测点、圆心、半径都作为参数传入,避免参数缺失
- 补全了
inCircle的布尔值返回逻辑,符合最初的函数设计要求
内容的提问来源于stack exchange,提问作者user14574630
相关产品推荐
相关产品推荐

