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中的yield使用方法
Feb 11 Python
零基础写python爬虫之爬虫的定义及URL构成
Nov 04 Python
浅析Python中的多重继承
Apr 28 Python
python字符串的常用操作方法小结
May 21 Python
浅谈python对象数据的读写权限
Sep 12 Python
基于python的字节编译详解
Sep 20 Python
Python字符串的全排列算法实例详解
Jan 07 Python
python爬取王者荣耀全皮肤的简单实现代码
Jan 31 Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 Python
pytorch 中的重要模块化接口nn.Module的使用
Apr 02 Python
Python开发入门——迭代的基本使用
Sep 03 Python
scrapy redis配置文件setting参数详解
Nov 18 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下使用无限生命期Session的方法
2007/03/16 PHP
PHP分页显示制作详细讲解
2008/11/19 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
JavaScript 拾碎[三] 使用className属性
2010/10/16 Javascript
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
jquery动态更换设置背景图的方法
2014/03/25 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
Angular 向组件传递模板的两种方法
2018/02/23 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
Python3 处理JSON的实例详解
2017/10/29 Python
实用自动化运维Python脚本分享
2018/06/04 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
Python request post上传文件常见要点
2020/11/20 Python
全球立体声:World Wide Stereo
2018/09/29 全球购物
瑞典香水、须后水和美容产品购物网站:Parfym-Klick.se
2019/12/29 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
结婚喜宴家长答谢词
2014/01/15 职场文书
思想品德自我评价
2014/02/04 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
植树节活动总结
2014/04/30 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
党支部书记岗位职责
2015/02/15 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
国庆节新闻稿
2015/07/17 职场文书
Python采集壁纸并实现炫轮播
2022/04/30 Python