获得不含数字的纯文本

问题描述:获得用户非数字输入,如果含有数字,则要求重新输入,直到满足要求。

要求:判断数字数据类型;重新输入

满足方法:对输入字符串遍历,依次判断条件;while循环——保证“重新输入”,if语句判断跳出循环,输出文本的时机。

以下为具体代码:

while True:#T记得大写
    s=input('请输入不带数字的文本:')
    n=0#引入参数,方便接下来的条件判断
    for i in s:#取出s中的每一个字符
        try:
            int(i)#如果是数字,int()不会报错,n会加一,将不能跳出循环;而纯文本将会跳到except,执行continue的命令,取出下一个字符进行判断
            n+=1
        except:
            continue
    if n==0:
        break
print(s)

这种方法的关键在于引入了变量n,通过n值的变化来判断是否应该跳出循环;

这种思路适用于判断"XX是否存在"之类的问题。

当然代码还可以进一步简化:

while True:#T记得大写
    s=input('请输入不带数字的文本:')
    n=0#引入参数,方便接下来的条件判断
    for i in s:#取出s中的每一个字符
        if '0'<= i <='9':#字符串的比较是从高位到低位,对位比较其Unicode编码的大小
            n+=1
    if n==0:
        break
print(s)

if '0'<= i <='9'这一步中涉及字符串的大小比较

1.比较方法:从高位到低位,对位比较其Unicode编码的大小,只要字符串a的高位比b的大,则a>b返回True,如:

a='321'
b='3120'
a>b

2.unicode大小:数字<大写字母<小写字母<汉字

因此,如果i是数字,那么肯定在0~9这个范围;而汉字则远远超出这个范围,由此可以判断出是否含有数字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值