You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:18:00