简易平方根计算器开发问题:square函数无法正确计算平方根
实现简易平方根计算器
首先要明确:你提供的square函数是用来计算正整数的平方的,而且它本身存在问题:
- 缩进错误:
return sum_so_far这一行的缩进多了一个空格,会触发语法错误; - 适用范围有限:只能处理正整数(因为
range(x)要求参数为整数),且它的功能是平方计算,和平方根是完全反向的操作,所以用它肯定得不到正确的平方根结果。
要实现简易平方根计算器,推荐用牛顿迭代法——这是一种高效的近似求解方法,能快速得到满足精度要求的平方根值。以下是实现代码:
def square_root(n, tolerance=1e-6): """ 用牛顿迭代法计算非负数n的平方根,tolerance参数控制结果精度 """ # 处理特殊值:0和1的平方根就是自身 if n == 0 or n == 1: return n # 初始猜测值,取n的一半作为起始点 guess = n / 2 # 迭代修正猜测值,直到误差在精度范围内 while abs(guess * guess - n) > tolerance: guess = (guess + n / guess) / 2 return guess
使用示例
# 计算10的平方根 print(square_root(10)) # 输出近似值3.1622776601683795
补充说明
- 牛顿迭代法的核心逻辑是通过不断修正猜测值,让猜测值的平方逐步逼近目标数,直到误差小于设定的精度阈值(默认是
1e-6,即0.000001); - 这个函数支持所有非负数的平方根计算,相比原
square函数适用范围更广,结果精度也可灵活调整。
内容的提问来源于stack exchange,提问作者Ankit mishra
相关产品推荐
相关产品推荐

