用户:
e国阳光查看:0 回复:2 评论:0 创建时间:2020-02-14T23:17:10
【作品展示】

【作品介绍】
通过范围的缩小猜数,最大次数为中值查找次数。
【作品源代码】
#猜数游戏
import random
import math
while True:
try:
maxNum=int(input("输入最大的数(100到1000):"))
except ValueError:
print("输入的不是数!退出输入0。")
continue
if maxNum==0:
break
if maxNum<100 or maxNum>1000:
print("你输入的数不在100到1000的范围,请重新输入!")
continue
num=random.randint(1,maxNum) #生成一个1到maxNum的随机数,要猜的数
maxTs=math.floor(math.log2(maxNum))+1 #猜数机会,计数方法:2的n次方<=maxNum,n的最大值+1
print("你共有%d次机会猜数:" % maxTs)
ynum=0 #猜的数
start=1
end=maxNum
t=0 #猜数次数
isOk=False #是否猜对
while(tend:
print("输入的数%d不%d到%d的范围内!请重新输入!" % (ynum,start,end) )
continue
if ynum==num: #猜对了
isOk=True
break
if ynum>num: #猜的数大了
end=ynum-1
else: #猜的数小了
start=ynum+1
t+=1
if isOk:
print("恭喜你!猜对了!这个数就是%d,你猜了%d次/共%d次。" % (num,t+1,maxTs))
else:
print("很抱歉,你把%d次机会用完,但没有把数%d猜出来。别灰心再来过!" % (maxTs,num) )
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn