题目:二分法求平方根B
描述
设计一个用二分法计算一个大于或等于 0 的实数 n 的平方根的函数sqrt_binary(n),实数 n和计算精度(abs(x*x - n) )控制由用户在同一行内输入,用逗号进行分隔,输出结果保留8位小数。
注:初始区间取[0,n+0.25]
输入格式
在同 行内输入一个实数 n(大于或等于0)和一个代表精度的数字(可用1e-m格式输入)
输出格式
第一行输出用自己设计的函数计算得到的平方根
第二行输出用math库开平方函数计算得到的平方根
输入输出示例
输入 输出
示例 1 5.0,1e-7 2.23606796
2.23606798
语法知识:
1.map() 函数将一个函数应用于可迭代对象中的每个元素,并返回一个包含结果的新可迭代对象。
在这个代码中,map() 函数将 float() 函数应用于字符串 input() 的输出,它包含以逗号分隔的两个数字。
map() 函数的输出是一个可迭代对象,包含两个浮点数,然后将其分配给变量 num 和 accuracy。
因此,map() 函数简化了将字符串输入转换为浮点数的过程,并将其分配给相应的变量。
代码:
import math
def sqrt_binary(num,accuracy):
low,high=0,num+0.25//为啥加0.25?题目要求的
while True:
x=(low+high)/2
if x*x <num:
low = x
else:
high = x
if abs(x*x-num)<accuracy://精度判断
return x
num,accuracy = map(float,input().split(","))
print("{:.8f}".format(sqrt_binary(num,accuracy)))
print("{:.8f}".format(math.sqrt(num)))