概述
Python猜数字游戏
我在最基础的python猜数字游戏基础上增加了一些细节使得用户体验更高。具体的改进方案如下:
(1)异常处理,增加程序健壮性。请用异常处理改造猜数字游戏,使其输入的不是整数(如字母、浮点数等)时,不再出错终止,而是给出“输入内容必须为整数!”的提示,并让用户重新输入。
(2)增加程序灵活性 。为了方便修改生成随机数的范围,将猜数字的最小值和最大值设为变量并进行统一设置。设置猜数字的最大次数,猜错后提示还有几次机会。
(3)改善用户体验。当用户没猜对时,根据猜数情况缩小猜解范围,以方便用户下次猜数。例如用户猜的数字为70,比实际数字大,那么就提示“@数字区间0-70,请输入你猜的数字:”;如果比实际数字小,就提示“@数字区间70-100,请输入你猜的数字:”
下面给出基础的包含异常处理的python猜数字游戏的代码:
#1.py
import random as r
a=r.randint(0,100)
print("计算机产生了一个1~100之间的数")
b=1
while True:
print("第"+str(b)+"局")
try:
d=int(input("请输入你所猜测的数据:"))
except ValueError:
print("输入内容必须为整数!")
else:
if a==d:
print("猜对了!")
break
elif a<d:
print("猜大了!")
else:
print("猜小了!")
b+=1
print("游戏结束了!")
没有输入错误时运行的截图:
输入错误的数据类型时的控制台输出:
为了增加程序的灵活性,我们将预先写在程序中的随机数的上下限和最多猜测的次数改为由控制台输入,代码如下:
这里我们采用format方法来填充字符串。
为了增强用户体验,我又对代码进行了改善。主要是通过多分支循环和嵌套循环来判断各种情况下对应的输出以及相应的提示性信息。其中就包含了:在猜错误的情况下,根据用户猜测的数据来缩减并提示玩家下次猜测数据的范围
完整的代码就附在下面了,需要的小伙伴拿走不谢哈~
对了,看完觉得还不错的话,请送小编一个赞呗!
#猜游戏终极版.py
import random as r
#让计算机产生一个e~f之间的随机数
min=int(input("请输入猜数字游戏的最小值:"))
max=int(input("请输入猜数字游戏的最大值:"))
a=r.randint(min,max)
print("计算机产生了一个{}~{}之间的数".format(min,max))
maxtimes=eval(input("请输入最多允许猜多少次:"))
times=0
mi=min
ma=max
for times in range(maxtimes):
print("第"+str(times+1)+"局")
try:
b=int(input("请输入你所猜测的数:"))
if b<mi or b>ma:
print("无效的输入!请输入{}~{}之间的数!".format(mi,ma))
#判断数据类型异常
except ValueError:
print("输入内容必须为整数!")
else:
if a==b:
print("你猜了{}次,猜对了!".format(times+1))
break #猜对了就跳出循环!
elif a<b:
if b<mi or b>ma:
print("无效的输入!请输入%d~%d之间的数!"%(mi,ma))
ma=b-1
print("猜大了呦!请输入{}~{}之间的数!".format(mi,ma))
print("您还有{}次机会".format(maxtimes-times-1))
else:
if b<mi or b>ma:
print("无效的输入!请输入%d~%d之间的数!"%(mi,ma))
mi=b+1
print("猜小了呦!请输入{}~{}之间的数!".format(mi,ma))
print("您还有{}次机会".format(maxtimes-times-1))
continue
print("游戏结束了!")
做事做全套,运行截图也放这儿了:
最后还得多说一句:
由于小编的水平有限,可能很多地方讲的不到位或有错误,我欢迎所有的小伙伴指出我的问题,我会加以改正!咱们一起学习,共同进步~
最后
以上就是典雅萝莉为你收集整理的Python猜数字游戏(包含异常处理,可自定义随机数产生范围、最大猜测次数,如果用户猜错的话可根据输入情况缩小猜测范围)的全部内容,希望文章能够帮你解决Python猜数字游戏(包含异常处理,可自定义随机数产生范围、最大猜测次数,如果用户猜错的话可根据输入情况缩小猜测范围)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复