目录

#什么是二分法

#用二分法猜电脑随机数

#用二分法猜用户所想的数


1.什么是二分法?

对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。

二分法,顾名思义就是一分为二的方法。设[a,b]为R的闭区间,逐次二分法就是造出如下的区间序列([an,bn]):a0=a,b0=b,且对任一自然数n,[an+1,bn+1]或者等于[an,cn],或者等于[cn,bn],其中cn表示[an,bn]的中点.

二分法在计算机中的应用主要在算法上,用于数据的查找:

假设数据是按升序排列,对于给定值num,先取序列中间值n

若num=n,则查找成功

若num<n,再取最小值到n的中间值和num进行比较

若num>n,则取最大值到n的中间值和num进行比较

循环往复,知道num=n

2.用二分法猜电脑随机数

二分法我们已经有所了解,我们也知道,生成随机数的函数为random.randint(min,max),其中min和max分别是随机数的最大值和最小值。

定义相关变量,其中max,min为随机数取值范围,guess为猜测的数字,secret为随机数,time为猜测次数

import random
max = 10000*1000
min = 0
guess = int((max - min)/2) + min
secret = random.randint(min,max)
time = 0

进入循环由于存在secret等于区间中值的可能,因此要先给time+1,再分情况讨论。循环猜测直到猜对结束循环

while 1 :time = time + 1if guess == secret :print("该随机数为{0},猜了{1}次".format(guess,time))breakelif guess < secret :min= guessguess = int ((max - min) / 2) + minelse :max = guessguess = int((max - min) / 2) + minprint("结束")

3.用二分法猜用户所想的数

这个程序的思路和上面的大致相同,只是多了让用户判断的环节

import sys
sys.path.append('D:\\study\\python\\floint')   #括号内容为文件的绝对路径
import floint
print("在心里想一个任意大小的整数")
min,max = eval(input("请输入数字的取值范围(由小到大,用逗号隔开):"))
guess = int((max - min) / 2) + min
time = 0
while 1 :time += 1print("你想的数字是{},对吗?".format(guess))heart = input("如果相同,请按‘=’\n如果大于你想的数,请按‘>’\n如果小于你想的数,请按‘<’\n")if heart == '=' :print("我只猜了{}次就猜到了,请夸奖我".format(time))breakelif heart == '>' :max = guessguess = int((max - min) / 2) + minelif heart == '<' :min = guessguess = floint.floint_carry((max-min) / 2) +minelse :print("滚犊子,你他娘的真是个人才,让你整'{}'了吗?".format(heart))time -= 1

由于我之前在测试程序的时候发现,如果猜的数字时最大值时,guess时永远猜不出来的,这是我们的算法有了漏洞,因为我们用的int()函数只取整数部分,因此我写了floint_carry()函数,作用是,当小数部分不为0时,就给整数部分+1。这样guess也可以取到最大值了。

这是floint_carry()函数部分

#小数取整进位
def floint_carry( x) :x = float ( x )y = int (x)if x - y == 0 :return yelse :return (y + 1)

ok,这就是“用二分法编写猜数字游戏(含:猜电脑随机数,和用户自己想的数字)python”的全部内容啦,新手上路请多多指教,如果有不对的地方,还请大佬不吝赐教。

用二分法编写猜数字游戏(含:猜电脑随机数,和用户自己想的数字)python相关推荐

  1. C语言习题:猜数字游戏(C语言随机数)

    C语言习题:猜数字游戏(C语言随机数) 需要了解C语言随机数的生成方法: 在C语言中比较常用的随机函数是 rand 函数,它可以随机的产生 0 ~ rand_max 的随机数,定义类型不同最大值也不同 ...

  2. 利用Python语言编程,完成猜数游戏,系统随机产生一个1到100的数字num1,用户输入一个数字guess,如果没有猜对,根据系统给出的提示重新猜数,直到才对为止。

    利用Python语言编程,完成猜数游戏,系统随机产生一个1到100的数字num1,用户输入一个数字guess,如果没有猜对,根据系统给出的提示重新猜数,直到才对为止. 要求:(1)系统每次都要给出新的 ...

  3. 猜数字游戏随机生成一个随机数,并给玩家三次机会猜测

    """猜数字游戏随机生成一个随机数,并给玩家三次机会猜测""" import random #import的作用是导入random这个伪造随 ...

  4. java猜数字游戏_java猜数字游戏

    java猜数字游戏要求:1.在100-999中输入任意数字,有10次猜的机会,期间会被告知猜大了.猜小了.猜对了.当10次机会用完,游戏结束.2.任意时候按S可开始或重新开始,按Q可退出.我... j ...

  5. 猜数字游戏(C语言生成随机数)

    分析需求 生成随机数 通过循环实现多次猜数 具体内容 1.生成随机数 这里使用rand()方法来生成随机数(头文件为<stdlib.h>),关于rand函数具体的知识可以在MSDN中查看( ...

  6. python第四章答案猜数游戏_猜数游戏python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文实例为大家分享了python实现猜数游戏的具体代码,供大家参考,具体内容如下 ...

  7. 猜数字游戏,猜错要自动关机哦

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> ...

  8. JavaScript实现猜数字游戏(猜一位和四位数字)

    一.猜1-10中的数字 实现效果:程序随机生成一个1~10之间的数字,用户输入所猜数字(1~10以内),系统判断这两个数字的大小.如果用户没有输入数字,则提示"出错啦!!!",如果 ...

  9. java猜数游戏_java猜数游戏

    java随机数的产生 int number=(int)(Math.random()*10+1) Math.random()*n //n个随机数,从0开始 do{}while循环 //猜数,1到10的随 ...

最新文章

  1. 王者荣耀全栈项目部署到阿里云服务器笔记
  2. 【NOI2013模拟】棋盘游戏
  3. springAOP编程-aspectJ开启注解自动代理
  4. Tuomas Pirinen:创造游戏人物的8个方法
  5. 升级MAC OX上的Python到3.4
  6. P8U8 最中听的话,不要做每件事都考虑太多。
  7. 5、SQL Server数据库、T-SQL
  8. 软件工程导论 03章需求分析
  9. 一种在旧代码上增加新需求的重构模式
  10. 使用maven官方仓库直接下载项目需要的jar包方法
  11. aspectjweaver.jar包下载
  12. Pyserial文件传输
  13. 群友(淡泊、明志)总结android面试题
  14. java编写GUI计算器
  15. 滁州市化工厂人员定位系统——苏州新导智能科技,技术精湛,定位精确
  16. Azure 媒体服务可将优质内容传输至 Apple TV
  17. SSL安全证书生成及概念解释
  18. hdu 2160 母猪的故事
  19. open-falcon详解
  20. 合宙esp32c3不带串口芯片的型号如何arduino和micropython

热门文章

  1. 逆变器阻抗扫描 扫频法 阻抗扫描 阻抗建模验证
  2. RPA自动化软件汇总
  3. 计算机控制6路模拟量输出,工业级开关量远程无线收发模块|无线开关量6路输入6路输出控制器|4-20ma模拟量无线通信模块...
  4. Linux内核设计与实现(13)第十三章:虚拟文件系统
  5. 如何在JPG照片尺寸不变的情况下压缩大小?
  6. 技术分享 | 无人机集群——分布式控制算法
  7. 自动化测试概述/自动化工具
  8. 计算机基础实验4,计算机基础实验 3-4 实验报告
  9. 盘点百度搜索算法大全(2022最新版)
  10. java的含义是什么