问题描述:获得用户非数字输入,如果含有数字,则要求重新输入,直到满足要求。
要求:判断数字数据类型;重新输入
满足方法:对输入字符串遍历,依次判断条件;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这个范围;而汉字则远远超出这个范围,由此可以判断出是否含有数字。