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中遍历文件的3个方法
Sep 02 Python
利用Python和OpenCV库将URL转换为OpenCV格式的方法
Mar 27 Python
初步剖析C语言编程中的结构体
Jan 16 Python
Python 快速实现CLI 应用程序的脚手架
Dec 05 Python
创建pycharm的自定义python模板方法
May 23 Python
python用pandas数据加载、存储与文件格式的实例
Dec 07 Python
python基于递归解决背包问题详解
Jul 03 Python
softmax及python实现过程解析
Sep 30 Python
解决TensorFlow GPU版出现OOM错误的问题
Feb 03 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
Python如何使用paramiko模块连接linux
Mar 18 Python
tensorflow实现将ckpt转pb文件的方法
Apr 22 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的面试题集,附我的答案和分析(一)
2006/11/19 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
使用JQUERY进行后台页面布局控制DIV实现左右式
2014/01/07 Javascript
jquery实现pager控件示例
2014/04/09 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
2014/07/23 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
EsLint入门学习教程
2017/02/17 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
Python语言实现机器学习的K-近邻算法
2015/06/11 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
哪些是python中web开发框架
2020/06/17 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
Uber Eats台湾:寻找附近提供送餐服务的餐厅
2018/05/07 全球购物
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
团队经理竞聘书
2014/03/31 职场文书
小摄影师教学反思
2014/04/27 职场文书
社团活动总结
2014/04/28 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
Nginx动静分离配置实现与说明
2022/04/07 Servers