刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
简答题
36.猜价格
爸爸五一旅游回来给小明购买了一文创礼物,问能否用最少的次数猜出礼物的价格。提示该礼物的价格在1-200之间,且是整数。小明编写如下Python程序解决该问题,输出结果中包含猜价格的过程以及猜的次数。请完善划线处的代码。
price = int(input()) #存礼物的实际价格
def sear(p,pmin,pmax):
i = pmin
j = pmax
s = ''
c = 0
while ① :
c = c + 1
m = (i + j)//2
if m == p:
s = s + str(m) + ','
②
elif m < p:
i = m + 1
else:
③
s = s + str(m) + ','
return s,c
pmin = 1
pmax = 200
rst , c = sear(price,pmin,pmax)
print('猜价格的过程是',rst)
print('一共猜了',c,'次就猜对价格')
爸爸五一旅游回来给小明购买了一文创礼物,问能否用最少的次数猜出礼物的价格。提示该礼物的价格在1-200之间,且是整数。小明编写如下Python程序解决该问题,输出结果中包含猜价格的过程以及猜的次数。请完善划线处的代码。
price = int(input()) #存礼物的实际价格
def sear(p,pmin,pmax):
i = pmin
j = pmax
s = ''
c = 0
while ① :
c = c + 1
m = (i + j)//2
if m == p:
s = s + str(m) + ','
②
elif m < p:
i = m + 1
else:
③
s = s + str(m) + ','
return s,c
pmin = 1
pmax = 200
rst , c = sear(price,pmin,pmax)
print('猜价格的过程是',rst)
print('一共猜了',c,'次就猜对价格')
使用微信搜索喵呜刷题,轻松应对考试!
答案:
解析:
:
这是一个关于二分查找算法的问题。题目要求小明编写一个Python程序来猜测礼物的价格,该程序使用二分查找算法来在最少的猜测次数内找到正确的价格。
二分查找算法的核心思想是,首先选择一个中间值,然后根据中间值与目标的比较结果,缩小查找范围。在这个过程中,需要不断地更新查找范围的最小值和最大值。因此,划线处的代码应该根据中间值m与目标价格p的比较结果来更新查找范围的最小值和最大值。具体来说:
①处应该是一个循环条件,表示当最小值小于等于最大值时继续循环。因此,划线处的代码应该是i <= j。
②处是一个else分支,表示当中间值m小于目标价格p时的情况。在这种情况下,应该增加最小值i的值,同时将最大值j的值保持不变或者减小(根据实际需求)。因此,划线处的代码应该是else: j = m - 1或者直接将该行删除(因为当m < p时,j的值不需要调整)。
③处也是一个else分支,表示当中间值m大于或等于目标价格p时的情况。在这种情况下,应该减小最大值j的值或者保持不变(根据实际需求)。因此,划线处的代码应该是j = m或者直接将该行删除(因为在else分支中已经确定了价格大于或等于m,不需要再次缩小pmax的值)。
创作类型:
原创
本文链接:36.猜价格爸爸五一旅游回来给小明购买了一文创礼物,问能否用最少的次数猜出礼物的价格。提示该礼物的价
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!



