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多线程编程(二):启动线程的两种方法
Apr 05 Python
python从sqlite读取并显示数据的方法
May 08 Python
在Python程序中操作MySQL的基本方法
Jul 29 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
Python使用当前时间、随机数产生一个唯一数字的方法
Sep 18 Python
python3+PyQt5重新实现自定义数据拖放处理
Apr 19 Python
python实现抖音视频批量下载
Jun 20 Python
python按时间排序目录下的文件实现方法
Oct 17 Python
Python查找文件中包含中文的行方法
Dec 19 Python
Python 保存矩阵为Excel的实现方法
Jan 28 Python
Python多版本开发环境管理工具介绍
Jul 03 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
如何使用Strace调试工具
2013/06/03 PHP
php mail to 配置详解
2014/01/16 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
面向对象的编程思想在javascript中的运用上部
2009/11/20 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
详解node HTTP请求客户端 - Request
2017/05/05 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
ES6 十大特性简介
2020/12/09 Javascript
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
python自带的http模块详解
2016/11/06 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
银行个人求职自荐信范文
2013/12/16 职场文书
七年级生物教学反思
2014/01/30 职场文书
房产转让协议书
2014/04/11 职场文书
政协调研汇报材料
2014/08/15 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
采购部年度工作总结
2015/08/13 职场文书
2019假期福利管理制度!
2019/07/15 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫
redis 解决库存并发问题实现数量控制
2022/04/08 Redis