Python实现破解猜数游戏算法示例


Posted in Python onSeptember 25, 2017

本文实例讲述了Python实现破解猜数游戏算法。分享给大家供大家参考,具体如下:

QQ群里的聊天机器人会发起猜数小游戏. 玩法如下:

1. 用户发 #猜数    到群里
2. 机器人响应: 猜数已经开始, 范围是1-10000之间的某个数
3. 你发送 #猜数[123] 到群里
4. 机器人响应: 大了或者小了, 或者恭喜你猜中了
5. 你根据刚才猜的123, 和返回, 猜一个更小或更大的数, 发送 #猜数[111] , 即返回第2步

那么最好的猜测方法肯定是找居中的数了, 由于心算耗时, 所以直接上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 相关文章推荐
python实现无证书加密解密实例
Oct 27 Python
python 性能优化方法小结
Mar 31 Python
Python 列表理解及使用方法
Oct 27 Python
tensorflow实现加载mnist数据集
Sep 08 Python
python3.6根据m3u8下载mp4视频
Jun 17 Python
Python全栈之列表数据类型详解
Oct 01 Python
Series和DataFrame使用简单入门
Nov 13 Python
Python pip install如何修改默认下载路径
Apr 29 Python
Python 绘制可视化折线图
Jul 22 Python
浅析python函数式编程
Sep 26 Python
python 如何读、写、解析CSV文件
Mar 03 Python
python如何将mat文件转为png
Jul 15 Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 #Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 #Python
python中通过预先编译正则表达式提高效率
Sep 25 #Python
python之Character string(实例讲解)
Sep 25 #Python
python利用正则表达式搜索单词示例代码
Sep 24 #Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
Sep 24 #Python
Django如何实现内容缓存示例详解
Sep 24 #Python
You might like
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
基于mysql的论坛(1)
2006/10/09 PHP
用php+mysql一个名片库程序
2006/10/09 PHP
php下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
php获取文件大小的方法
2014/02/26 PHP
xml和web特殊字符
2009/04/28 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
JS实现表单多文件上传样式美化支持选中文件后删除相关项
2016/09/30 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
three.js中文文档学习之如何本地运行详解
2017/11/20 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
Django与遗留的数据库整合的方法指南
2015/07/24 Python
python读写LMDB文件的方法
2018/07/02 Python
python实现狄克斯特拉算法
2019/01/17 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
CSS3 简写animation
2012/05/10 HTML / CSS
德国网上宠物店:Zoobio
2018/05/23 全球购物
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
专升本自我鉴定
2013/10/10 职场文书
银行竞聘报告范文
2014/11/06 职场文书
感恩教师主题班会
2015/08/12 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技