Python猜数字游戏(包含异常处理,可自定义随机数产生范围、最大猜测次数,如果用户猜错的话可根据输入情况缩小猜测范围)

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("游戏结束了!")

做事做全套,运行截图也放这儿了:
在这里插入图片描述

最后还得多说一句:
由于小编的水平有限,可能很多地方讲的不到位或有错误,我欢迎所有的小伙伴指出我的问题,我会加以改正!咱们一起学习,共同进步~

  • 39
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不高明的骗子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值