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 相关文章推荐
用smtplib和email封装python发送邮件模块类分享
Feb 17 Python
整理Python最基本的操作字典的方法
Apr 24 Python
Python版微信红包分配算法
May 04 Python
Python数据预处理之数据规范化(归一化)示例
Jan 08 Python
关于Python 常用获取元素 Driver 总结
Nov 24 Python
python实现智能语音天气预报
Dec 02 Python
Python安装与卸载流程详细步骤(图解)
Feb 20 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
Feb 29 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
通过代码实例了解Python异常本质
Sep 16 Python
Python为何不支持switch语句原理详解
Oct 21 Python
python基础之函数的定义和调用
Oct 24 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
基于MySQL分区性能的详细介绍
2013/05/02 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
屏蔽Flash右键信息的js代码
2010/01/17 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
2010/03/31 Javascript
JavaScript移除数组元素减少长度的方法
2013/09/05 Javascript
Nodejs实现批量下载妹纸图
2015/05/28 NodeJs
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
python 重命名轴索引的方法
2018/11/10 Python
python 同时运行多个程序的实例
2019/01/07 Python
Pytorch根据layers的name冻结训练方式
2020/01/06 Python
Python实现一个论文下载器的过程
2021/01/18 Python
美国家具网站:Cymax
2016/09/17 全球购物
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
药学专业大学生个人的自我评价
2013/11/04 职场文书
奥巴马演讲稿
2014/01/08 职场文书
小学教师师德承诺书
2014/05/23 职场文书
教师考察材料范文
2014/06/03 职场文书
社区服务活动感想
2015/08/11 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
MySQL读取JSON转换的方式
2022/03/18 MySQL