1. 二分法猜数游戏
import random
x = random.randint(1, 1024)
- 随机产生一个给定范围内整数,[1,1024]
- 循环10次猜数
- 输入猜的整数
- 如果猜中
- 输出猜 中了
- 终止循环
- 否则如果猜的数大于产生的数
- 输出猜的数大了
- 否则
- 输出猜的数小了
- 其10次没猜中,输出你没猜中 ```python import random
x = random.randint(1, 1024) # 随机产生一个0-1024之间的整数 for i in range(10): # 允许猜10次 guess = int(input()) # 输入猜的整数 if guess == x: print(‘猜中了’) # 猜中则终止循环 break elif guess > x: print(‘猜的数大了’) else: print(‘猜的数小了’) else: print(‘你没猜中哦’)
<a name="KMczH"></a>
# 2. 二分法求平方根
<br />设计一个用二分法计算一个大于或等于 1 的实数 n 的平方根的函数sqrt_binary(n),计算精度控制在计算结果的平方与输入的误差不大于1e-6。<br />注:初始区间取[0,n]
```python
import math
def sqrt_binary(num):
low, high= 0,num
while True:
x = (high + low)/2
if abs(x**2 - num)<=1e-6:
return x
elif x**2 - num<0:
low = x
else:
high = x
num = float(input())
if num >=1:
print(sqrt_binary(num))
print(math.sqrt(num))
3.二分法求函数的零点
描述
现有方程:f(x) = x5-15x4+85x3-225x2+274x-121, 已知f(x)在[1.5,2.4]区间有且只有一个根,用二分法求解该根。
输入格式
输入一个正整数n,当f(x)值小于10-n时认为函数值为0
输出格式
输出方程在[1.5,2.4]区间的根,精确到小数点后第6位
def f(x):
return x ** 5 - 15 * x ** 4 + 85 * x ** 3 - 225 * x ** 2 + 274 * x - 121
def bisection_method(low, high):
while True:
mid = (low + high) / 2
if abs(f(mid)) < 1 * 10 ** -n:
return '{:.6f}'.format(mid)
elif f(mid) < 0:
high = mid
else:
low = mid
if __name__ == '__main__':
n = int(input())
Low, High = 1.5, 2.4
print(bisection_method(Low, High))