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运用于数据分析的简单教程
Mar 27 Python
Python求导数的方法
May 09 Python
分析用Python脚本关闭文件操作的机制
Jun 28 Python
python对象及面向对象技术详解
Jul 19 Python
Python实现随机生成有效手机号码及身份证功能示例
Jun 05 Python
Python自定义函数定义,参数,调用代码解析
Dec 27 Python
Python文件如何引入?详解引入Python文件步骤
Dec 10 Python
基于django ManyToMany 使用的注意事项详解
Aug 09 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
Dec 26 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 Python
解决TensorFlow训练模型及保存数量限制的问题
Mar 03 Python
python爬取某网站原图作为壁纸
Jun 02 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垃圾回收机制引用计数器概念分析
2013/06/24 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
关于php中一些字符串总结
2016/05/05 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
JS实现图片预加载无需等待
2012/12/21 Javascript
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
python re正则表达式模块(Regular Expression)
2014/07/16 Python
python中根据字符串调用函数的实现方法
2016/06/12 Python
Python中装饰器学习总结
2018/02/10 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
pytorch中的自定义数据处理详解
2020/01/06 Python
Python 自由定制表格的实现示例
2020/03/20 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
利用HTML5 Canvas API绘制矩形的超级攻略
2016/03/21 HTML / CSS
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
医院实习接收函
2014/01/12 职场文书
作弊检讨书1000字
2014/02/01 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
公开致歉信
2019/06/24 职场文书
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
Python-OpenCV实现图像缺陷检测的实例
2021/06/11 Python
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL