Python 字符串详解之isdigit小案例

前面我们讲了isdigit功能,这个功能只是确认字符串中是否都是数字。

我讲一个案例,简单的猜字游戏,就知道可以用在哪里了。

num = input('请输入你猜的数字:').strip()

后面的这个点strip我们前面讲过的,防止手抖或者眼神不太好。然后就要做判断了,比如我们要让用户猜的数字是36,开始做判断。

num = input('请输入你猜的数字:').strip()
if num > 36:
    print('猜大了')
elif num < 36:
    print('猜小了')
else:
    print('猜中了')

当然现在有个问题,我们前面这个strip处理的字符串,结果还是一个字符串,字符串是没办法直接和int类型作比较的所以我们还要做一步类型转换,用int这个歌功能把num这个字符串转成int类型,然后再赋值给num。

num = input('请输入你猜的数字:').strip()
num = int(num)
if num > 36:
    print('猜大了')
elif num < 36:
    print('猜小了')
else:
    print('猜中了')

这样能理解吧,num绑定了新的值,原来的值引用计数为0就被回收了嘛。我们直接开始打印。

我输入33,就显示猜小了,这样只能猜一次,我想让用户重复猜,猜对了才能退出程序。

这应该怎么做?我们前面学过while循环就能解决这个问题,代码最上面输入while 1,这个理解吗,隐式布尔值嘛,然后猜对了后面增加一个break,结束循环。

while 1:
    num = input('请输入你猜的数字:').strip()
    num = int(num)
    if num > 36:
        print('猜大了')
    elif num < 36:
        print('猜小了')
    else:
        print('猜中了')
        break

我先输入错误的20,让我继续猜,然后我再输入正确的,打印猜中了,最后结束循环。

但是还有一种情况,有的用户不按套路来,在里面输入英文,这样的话程序就会直接报错。

这是因为int这个功能他只能转纯数字的字符串,现在我们就可以用到刚刚讲的isdigit了。在用户输入之后我们以前判断一下,如果是串数字那就转换吃int类型,如果不是串数字,就直接打印‘别调皮了!’,然后下面continue,进入下一次循环。

while 1:
    num = input('请输入你猜的数字:').strip()
    if num.isdigit():
        num = int(num)
    else:
        print('别调皮了!')
        continue
    if num > 36:
        print('猜大了')
    elif num < 36:
        print('猜小了')
    else:
        print('猜中了')
        break

这样运行的话,程序怎么样都不会报错了。

未经允许不得转载:445IT之家 » Python 字符串详解之isdigit小案例

赞 (0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏