python - 我的结果是四舍五入的,我想要完整的答案
问题描述
这是我在 Python 中的代码:
def my_sqrt(a):
x=1
while True:
y=(x+a/x)/2.0
if y==x:
break
x=y
return y
我得到的输出:
>>> my_sqrt(1.0)
>>> my_sqrt(2)
1.5
期待获得:
my_sqrt(1.0)-->1.0
my_sqrt(2)-->1.41421356237
解决方案
return
结束函数并立即返回。它是缩进的,所以它在循环中并且在第一次迭代结束时无条件地运行。由于以下原因,使其在循环完成后运行break
:
def my_sqrt(a):
x = 1
while True:
y = (x + a / x) / 2.0
if y == x:
break
x = y
return y
或者,由于return
结束函数并因此结束循环,您甚至不需要break
:
def my_sqrt(a):
x = 1
while True:
y = (x + a / x) / 2.0
if y == x:
return y
x = y
推荐阅读
- batch-file - 批处理文件 - 使用第一个文件名的第一部分通过命令行创建 Zip 文件
- android - Android 禁用 ptrace 调试以确保安全
- reactjs - 反应 - 子组件未显示
- android-studio - 仅在 Flutter 的调试模式下运行的应用程序
- javascript - 基于第一个下拉菜单选项禁用第二个下拉菜单选项
- c# - 从 C++ 到 C# 的 P/Invoking int[] 显示随机大数而不是原始数组成员
- sql - 获取小数点后 5 个数字的百分比
- swift - 到 2D Swift 数组的 HTTP 响应字符串
- excel - 使用 Excel VBA WinHttpRequest 在 Windows 10 中的安全通道支持中出现错误
- javascript - 为什么对象方法不返回值?