用二分法编写猜数字游戏(含:猜电脑随机数,和用户自己想的数字)python
目录
#什么是二分法
#用二分法猜电脑随机数
#用二分法猜用户所想的数
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相关推荐
- C语言习题:猜数字游戏(C语言随机数)
C语言习题:猜数字游戏(C语言随机数) 需要了解C语言随机数的生成方法: 在C语言中比较常用的随机函数是 rand 函数,它可以随机的产生 0 ~ rand_max 的随机数,定义类型不同最大值也不同 ...
- 利用Python语言编程,完成猜数游戏,系统随机产生一个1到100的数字num1,用户输入一个数字guess,如果没有猜对,根据系统给出的提示重新猜数,直到才对为止。
利用Python语言编程,完成猜数游戏,系统随机产生一个1到100的数字num1,用户输入一个数字guess,如果没有猜对,根据系统给出的提示重新猜数,直到才对为止. 要求:(1)系统每次都要给出新的 ...
- 猜数字游戏随机生成一个随机数,并给玩家三次机会猜测
"""猜数字游戏随机生成一个随机数,并给玩家三次机会猜测""" import random #import的作用是导入random这个伪造随 ...
- java猜数字游戏_java猜数字游戏
java猜数字游戏要求:1.在100-999中输入任意数字,有10次猜的机会,期间会被告知猜大了.猜小了.猜对了.当10次机会用完,游戏结束.2.任意时候按S可开始或重新开始,按Q可退出.我... j ...
- 猜数字游戏(C语言生成随机数)
分析需求 生成随机数 通过循环实现多次猜数 具体内容 1.生成随机数 这里使用rand()方法来生成随机数(头文件为<stdlib.h>),关于rand函数具体的知识可以在MSDN中查看( ...
- python第四章答案猜数游戏_猜数游戏python
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文实例为大家分享了python实现猜数游戏的具体代码,供大家参考,具体内容如下 ...
- 猜数字游戏,猜错要自动关机哦
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> ...
- JavaScript实现猜数字游戏(猜一位和四位数字)
一.猜1-10中的数字 实现效果:程序随机生成一个1~10之间的数字,用户输入所猜数字(1~10以内),系统判断这两个数字的大小.如果用户没有输入数字,则提示"出错啦!!!",如果 ...
- java猜数游戏_java猜数游戏
java随机数的产生 int number=(int)(Math.random()*10+1) Math.random()*n //n个随机数,从0开始 do{}while循环 //猜数,1到10的随 ...
最新文章
- 王者荣耀全栈项目部署到阿里云服务器笔记
- 【NOI2013模拟】棋盘游戏
- springAOP编程-aspectJ开启注解自动代理
- Tuomas Pirinen:创造游戏人物的8个方法
- 升级MAC OX上的Python到3.4
- P8U8 最中听的话,不要做每件事都考虑太多。
- 5、SQL Server数据库、T-SQL
- 软件工程导论 03章需求分析
- 一种在旧代码上增加新需求的重构模式
- 使用maven官方仓库直接下载项目需要的jar包方法
- aspectjweaver.jar包下载
- Pyserial文件传输
- 群友(淡泊、明志)总结android面试题
- java编写GUI计算器
- 滁州市化工厂人员定位系统——苏州新导智能科技,技术精湛,定位精确
- Azure 媒体服务可将优质内容传输至 Apple TV
- SSL安全证书生成及概念解释
- hdu 2160 母猪的故事
- open-falcon详解
- 合宙esp32c3不带串口芯片的型号如何arduino和micropython