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中replace方法实例分析
Aug 20 Python
简单的python后台管理程序
Apr 13 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
Jun 07 Python
python实现二分查找算法
Sep 21 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
Oct 21 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
Feb 20 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
Mar 01 Python
python实现祝福弹窗效果
Apr 07 Python
Python中的引用知识点总结
May 20 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
python中upper是做什么用的
Jul 20 Python
python利用 keyboard 库记录键盘事件
Oct 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
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
JavaScript Sort 表格排序
2009/10/31 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
Bootstrap基础学习
2015/06/16 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
[03:54]DOTA2英雄梦之声_第06期_昆卡
2014/06/23 DOTA
打包发布Python模块的方法详解
2016/09/18 Python
django session完成状态保持的方法
2018/11/27 Python
python中正则表达式与模式匹配
2019/05/07 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
美国网上订购鲜花:FTD
2016/09/23 全球购物
医院门卫岗位职责
2013/12/30 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
酒店员工检讨书
2014/02/18 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
综合管理员岗位职责
2015/02/11 职场文书
旷工检讨书大全
2015/08/15 职场文书