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常用的文件及文件路径、目录操作方法汇总介绍
May 21 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
python 网络编程详解及简单实例
Apr 25 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
快速解决PyCharm无法引用matplotlib的问题
May 24 Python
Python中GeoJson和bokeh-1的使用讲解
Jan 03 Python
Python守护进程实现过程详解
Feb 10 Python
Python Tornado核心及相关原理详解
Jun 24 Python
Python把图片转化为pdf代码实例
Jul 28 Python
python中xlrd模块的使用详解
Feb 01 Python
pycharm部署django项目到云服务器的详细流程
Jun 29 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
php 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
解析csv数据导入mysql的方法
2013/07/01 PHP
php头像上传预览实例代码
2017/05/02 PHP
node.js中的Socket.IO使用实例
2014/11/04 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
vue 强制组件重新渲染(重置)的两种方案
2019/10/29 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
使用Python中的cookielib模拟登录网站
2015/04/09 Python
Django中使用group_by的方法
2015/05/26 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
PyQt5实现画布小程序
2020/05/30 Python
Python 解析库json及jsonpath pickle的实现
2020/08/17 Python
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
Java工程师面试集锦之Spring框架
2013/06/16 面试题
会计毕业自我鉴定
2014/02/05 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
社保代办委托书怎么写
2014/10/06 职场文书
企业年会祝酒词
2015/08/11 职场文书
同学联谊会邀请函
2019/06/24 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python