Python二分法破解猜数游戏脚本

林舟
林舟
发布时间:2026-10-13 | 4人浏览过
原创

本文介绍使用Python脚本破解QQ群猜数游戏的算法。游戏设定在1至10000范围内,通过二分查找法快速定位目标数字。脚本支持自定义范围输入,自动计算中间值并模拟交互过程,展示如何利用编程优化猜测策略,提高猜中效率。

本文分享一个使用Python实现的猜数游戏破解算法实例,供读者参考学习。

在QQ群聊天场景中,机器人常发起猜数小游戏,具体规则如下:

1. 用户在群内发送指令 #猜数 启动游戏。 2. 机器人回复提示:游戏已开始,目标数字位于1到10000之间。 3. 用户发送指令 #猜数[123] 进行猜测。 4. 机器人反馈结果:数字偏大、偏小或猜中。 5. 用户根据反馈调整范围,发送新的猜测指令(如 #猜数[111]),重复上述步骤。

最优策略是每次猜测当前范围的中间值。为避免人工计算耗时,可直接运行以下Python脚本进行自动化破解:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'huhu, <huyoo353@126.com>'
def find_middle(start, end):
  #print start, end
  return round((start+end)/2.0)
if __name__ == '__main__':
  start, end = '',''
  text = raw_input(u"> 输入猜数的范围(如:421-499 或者421 499 或者421,499):").decode('gb18030')
  spliters = '-, '
  for c in spliters:
    if text.find(c) != -1:
      num_list = text.split(c)
      if ''.join(num_list).isdigit():
        start, end = num_list[0],num_list[1]
        break
  if start == '' or end == '':
    print u'范围不正确'
  else:
    start = int(start)
    end  = int(end)
    count = 1
    last_guess = find_middle(start,end)
    while 1:
      result = raw_input(u"放弃猜测直接回车, 等于输入=, 小了输入1, 大了请输入2\n>>> #猜数[%d] ,对吗?> " % last_guess ).decode('gb18030')
      #print type(text)
      if result in ['q','e','exit','quit','bye',u'退出']:
        print 'Bye!'
        break
      else:
        result=result.strip()
        if result == '1':
          start = last_guess
          last_guess = find_middle(last_guess,end)
        elif result == '2':
          end = last_guess
          last_guess = find_middle(start,last_guess)
        elif result == '=':
          print u'恭喜猜中, 共猜了%d次' % count
          print u'#猜数[%d]' % last_guess
          break
        else: #
          continue
        count += 1

如需了解更多Python编程技巧,可参考本站相关专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》。

希望本文提供的代码示例能对您的Python程序设计有所帮助。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表