人工智能----读心术

实验要求
利用二分查找算法的规则,实现猜数字的游戏
实验设计
运行程序后,控制台显示提示信息,猜字游戏开始,请选择角色。如果选择猜题,则输入你随意猜的数字,然后会出现提示信息,所猜的数字是大了还是小了,你将有五次猜字的机会,机会用完,游戏结束,公布正确答案。
如果你选择出题,则输入你想让电脑猜的数字,然后点击回车,控制台会显示出电脑猜字的顺序以及猜字次数,最后电脑猜对数字,游戏结束。

实验难点

把二分算法的思想运用到该游戏中,即在设计电脑猜字时,需要让电脑首先猜所给范围的中值,如果猜错了,需要更新电脑的猜字范围,这就用到了循环语句中加入条件语句,当电脑猜的数字比实际值大的时候,需要将原范围的中值减1,在原最小值和原中值减1中继续猜字。反之,则需要将原范围的中值加1,在原中值加1和最大值中继续猜字。

实验代码

     import random
def Search(list1, num):min = 0  # 最小的下标max = len(list1) - 1  # 最大的下标i = 0 #记录电脑的猜测次数while True:i += 1mid = (max + min) // 2  # 中间的下标每次向下取整if num > list1[mid]:min = mid + 1  # 小于需要的猜的数,则将最小下标变为中间的,又因为中间的已经猜过,所以要加1print("电脑猜字:",list1[mid])elif num == list1[mid]:print("猜对了,正确答案是:",list1[mid])print("电脑一共猜了%d次" % i)breakelse:max = mid - 1  # 大于需要的猜的数,则将最大下标变为中间的,又因为中间的已经猜过,所以要减1print("电脑猜字:", list1[mid])
def Game():actualData = random.randint(1, 1000)  # 生成一个1-10随机数state = True  # 定义是否猜测成功的状态标识count = 0  # 表示用户猜的次数actuaCount = 5  # 表示用户最多可以猜错的次数# while循环,使猜字游戏可以持续进行while state:# 接收用户键盘输入的数据x = input("请猜测数字:")guess = int(x)  # 将输入的数据转换成int类型的值# 如果用户输入的数据不是系统随机生成的数据,则表示猜错了if guess != actualData:count += 1  # 猜错则让记录用户猜错次数的变量count加1# 如果用户猜的值如果比系统随机生成的值大,则表示猜大了if guess > actualData:print("猜大了")# 如果用户猜的值如果比系统随机生成的值小,则表示猜小了else:print("猜小了");else:print("恭喜,猜对了")break# 进行次数判断if count == actuaCount:  # 表示如果用户猜错actuaCount次时,结束while循环state = Falseprint("对不起,您已经没有机会了")else:print("还有 %s 次机会" % (actuaCount - count))  # %代表占位符print("游戏结束")# 最后输出系统随机生成的值,也就是本轮游戏最终结果print("实际结果是 %a " % actualData)
#while 1:
#控制台输出字符串
print("······猜字游戏······");
i = input("请选择猜角色:猜字or出题" + "\n");
if i == '猜字':Game()
elif i == '出题':list1 = [i for i in range(0, 1001)]num = int(input("输入的数字:"))Search(list1, num)
else:print('输入错误,请重新输入')

运行结果

初学AI---一个小实验练练手儿相关推荐

  1. BGP小实验(一)——小实验练练手走起来

    BGP小实验(一)--小实验练练手走起来 前言 一.需求 二.命令 1.基础配置走起来(端口+回环口IP,RIP及OSPF) R1 R2 R3 R4 R5 R6 R7 2.BGP走起来 R1 R2 R ...

  2. 小孔成像总结_每天一个小实验|小孔成像

    Hi-新朋友 记得点蓝字关注我们哟 小孔成像 在我们的生活中处处都能看到相机,那你知道其中的原理吗?让我们去看看吧. 实验材料 杯子.蜡烛.图钉.胶带塑料卡片.记号笔.打火机.剪刀 实验步骤 第一步: ...

  3. 【VBA编程】认识VBA、VBE,一个小实验和帮助的使用方法

    一.什么是VBA VBA是一种编程语言,是建立在Office中的一种应用程序开发工具.可以利用VBA有效地扩展Excel的功能,设计和构建人机交互界面,打造自己的管理系统,帮助Excel用户更有效地完 ...

  4. 关于purge master logs的一个小实验

    原理部分来自<MariaDB原理与实现> Page109-111 purge删除binlog的过程如下: 1.检查to_log在mysql-bin.index中是否存在,避免非法的purg ...

  5. Linux的使用和认识实验,通过一个小实验认识Linux vDSO

    这里不再解释vDSO的概念,而直接谈其意义: vDSO类似一个信息公告板,用户可以直取所需,而无需为此办理任何手续. vDSO相当于内核直接暴露出来的一个C库,作为GLIBC的补充. - 类似gett ...

  6. 关于java内存管理和OSR的一个小实验

    向ArrayList大量插入对象,并且统计耗时.在不同的jvm内存相关参数下,看看程序的性能有哪些改进. package com.company;import java.util.ArrayList; ...

  7. Linux设置fifo大小,linux fifo 的一个小实验 -- 缓存大小

    chinaunix网友2007-01-19 00:02 11100100 10111011 10001010 11100110 10010111 10100101 11100110 10010111 ...

  8. 【python10个小实验】1. 画一个简单的三角形

    对于如何编程入门,不少人都有自己的一套方法. 从我个人的角度来说,从一个个小的实战中锻炼,不失为一个好方法. 本系列,我将带大家来做10个python小实验,通过完成一系列的小目标, 一方面,熟悉py ...

  9. 【 FPGA 】按键消抖与LED灯流动小实验

    记录一个小实验吧,实验的目的是仅仅是塞塞牙缝而已,没其他意思,很简单. 功能:拨码开关控制led灯工作与否,拨码开关为on,led灯工作,否则不工作:导航按键up和down,也就是独立按键而已,控制l ...

最新文章

  1. Numpy关于数组的基本使用
  2. mysql 取绝对值_自学MySQL第六天
  3. IIS 承载的WCF服务失败
  4. UDP和TCP的区别(详细)
  5. mysql5.7.17安装问题
  6. 系统权限安全责任书_权限越大,责任越大
  7. Unity3d Shader开发(三)Pass(Fog )
  8. java-常用开源库-apache commons
  9. cjson 对象是json数组型结构体_C语言cJSON库的使用,解析json数据格式
  10. mybatis字符串模糊匹配
  11. 提高你的迅雷速度,绝对值得一看
  12. python 菜鸟-python菜鸟教程
  13. 不是技术牛人,如何拿到国内IT巨头的Offer
  14. tf 矩阵行和列交换_tf矩阵基础
  15. winvnc源码阅读笔记(四)---------vncDesktopThread线程
  16. 一个简单的OPPO商城页面
  17. Python爬虫神器pyppeteer,对 js 加密降维打击
  18. mos管的rc吸收电路计算_RC吸收电路的设计经验分享
  19. Android如何自定义一个心电图控件?
  20. 二分查找(序列是顺序的运用递归)

热门文章

  1. 在麦加总督的支持赞助下,朝觐博览会定于2023年1月举行
  2. IE提示”不支持当前兼容性设置,请在运行此Web页之前禁用兼容性视图”
  3. 西门子机床采集方案全集,西门子840D、西门子840DSL西门子828D数据采集方案
  4. Spark 3.0 - 5.ML Pipeline 实战之电影影评情感分析
  5. 记录一个好用的程序图标制作工具
  6. 盛大创新院赞助首届.NET技术交流会 - 演讲录像及下载
  7. 无U 盘纯净安装Win10
  8. 十四、基于FPGA的SDI协议介绍(一)
  9. 小冬冬历险记_行为驱动发展历险记
  10. 【学生系统】——登录界面