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 30 Python
python解决Fedora解压zip时中文乱码的方法
Sep 18 Python
Python中你应该知道的一些内置函数
Mar 31 Python
深入分析python数据挖掘 Json结构分析
Apr 21 Python
python文件操作之批量修改文件后缀名的方法
Aug 10 Python
python监测当前联网状态并连接的实例
Dec 18 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
python使用隐式循环快速求和的实现示例
Sep 11 Python
2020版Python学习路线图(附学习资料)
Sep 15 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 Python
忆童年!用Python实现愤怒的小鸟游戏
Jun 07 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
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
sails框架的学习指南
2014/12/22 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
微信小程序微信支付接入开发实例详解
2017/04/12 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
javascript中的隐式调用
2018/02/10 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
简述Python中的进程、线程、协程
2016/03/18 Python
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
2020/05/26 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
2020/06/05 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
高级护理实习生自荐信
2013/09/28 职场文书
日语专业个人求职信范文
2014/02/02 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
体育教师求职信
2014/06/30 职场文书
2015年团支书工作总结
2015/04/03 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
大学新生入学感想
2015/08/07 职场文书
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL