1. 二分法猜数游戏

  1. import random
  2. x = random.randint(1, 1024)
  1. 随机产生一个给定范围内整数,[1,1024]
  2. 循环10次猜数
    1. 输入猜的整数
    2. 如果猜中
      1. 输出猜 中了
      2. 终止循环
    3. 否则如果猜的数大于产生的数
      1. 输出猜的数大了
    4. 否则
      1. 输出猜的数小了
  3. 其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(‘你没猜中哦’)

  1. <a name="KMczH"></a>
  2. # 2. 二分法求平方根
  3. ‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬<br />‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬设计一个用二分法计算一个大于或等于 1 的实数 n 的平方根的函数sqrt_binary(n),计算精度控制在计算结果的平方与输入的误差不大于1e-6。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬<br />注:初始区间取[0,n]
  4. ```python
  5. import math
  6. def sqrt_binary(num):
  7. low, high= 0,num
  8. while True:
  9. x = (high + low)/2
  10. if abs(x**2 - num)<=1e-6:
  11. return x
  12. elif x**2 - num<0:
  13. low = x
  14. else:
  15. high = x
  16. num = float(input())
  17. if num >=1:
  18. print(sqrt_binary(num))
  19. 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位

  1. def f(x):
  2. return x ** 5 - 15 * x ** 4 + 85 * x ** 3 - 225 * x ** 2 + 274 * x - 121
  3. def bisection_method(low, high):
  4. while True:
  5. mid = (low + high) / 2
  6. if abs(f(mid)) < 1 * 10 ** -n:
  7. return '{:.6f}'.format(mid)
  8. elif f(mid) < 0:
  9. high = mid
  10. else:
  11. low = mid
  12. if __name__ == '__main__':
  13. n = int(input())
  14. Low, High = 1.5, 2.4
  15. print(bisection_method(Low, High))