利用python进行机器猜数,判断猜的次数

随机选择 1 ~100 的一个整数 n,通过某种规则判断这个数 n 是多少。

规则如下:给定当前的数字范围[a, b],选择其中间的数 m=(a+b)/2,判断 m 和 n 的大小关系。如果 m = n,则表示猜对了,如果 m > n,则在 [a, m-1] 中继续判断,如果 m < n,则在 [m+1, b] 中继续判断。如果数字范围 [a, b] 的中间数 m 不是整数,则向上取整,例如 [1, 4],则 m = 3。如果数字范围满足 a = b,那么数 n 一定满足 n = a = b,此时不需要继续猜数。

初始的数字范围是 [1, 100]。现在有一个猜数机器,按照上述的规则进行猜数,那么这个猜数机器需要猜几次?

输入
一个整数,范围是 1 ~ 100(包含1和100)
输出
一个整数,表示按照题目的规则猜数,猜对结果时总共猜数的次数。

import math
n=int(input())
start=1
end=100
m=math.ceil((start+end)//2)
cnt=1
while start<=end:
    if m==n:
        break
    if m>n:
        end=m-1
    else:
        start=m+1
    m=math.ceil((start+end)//2)
    cnt+=1
print(cnt)

from math import ceil
n=int(input())
a=1
b=100
c=0
while a<=b:
m = ceil((a + b) / 2)
if a<b:
if n > m:
a = m + 1
c = c + 1
elif n < m:
b = m - 1
c = c + 1
else:
c = c + 1
break
else:
break
print(c)