前面我们讲了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小案例