Python之判断数字的位数

文章目录

    • 写在开头的话
  • 判断数字位数
    • 题目
    • 解析
      • 方法一
      • 方法二
    • 写在最后的话:


这里是一段防爬虫文本,请读者忽略。
本文原创首发于CSDN,作者IDYS
博客首页:https://blog.csdn.net/weixin_41633902/
本文链接:https://blog.csdn.net/weixin_41633902/article/details/107440627
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!


写在开头的话

  • 请记住:实践是掌握知识的最快方法
  • 如果你只是怀着看看的态度去快速浏览文章,而不去认认真真的把文章里面讲的任何一个知识点去实践一遍,那么你永远也掌握不了它
  • 生命不息,折腾不止!

判断数字位数

题目

  1. 数字必须小于等于5位数
  2. 输入的数必须为数字,输入不正确则报错
  3. 对输入的数字,给出其位数

解析

方法一

  • 分析
  1. 首先利用input获取用户输入
  2. 利用isdigit:判断用户输入是否合法
  3. 利用len:判断用户输入数字大小是否超过5位数
  4. 如果用户输入0002,将其当作2处理
  • 源码
import re
a = input("please input your num\n")
a = re.sub("^0*","",a)  #如果字符前面出现了0,则将0剔除
if a.isdigit() == False:
    print("您的输入中含有非法字符串,请输入数字,不要含有别的非法字符")
    exit(-1)
if len(a) > 5:
    print("您输入的数字大于五位数,请输入一个小于5位数字的数")
    exit(0)
print("您输入的数字的位数为%d"%len(a))
  • 运行结果1
please input your num
sdfs
您的输入中含有非法字符串,请输入数字,不要含有别的字符
  • 运行结果2
please input your num
1290345
您输入的数字大于五位数,请输入一个小于5位数字的数
  • 运行结果3
please input your num
12563
您输入的数字的位数为5

方法二

  • 分析
  1. 利用input(),获取键盘输入
  2. 将其转化为int
  3. 利用tryexcept,捕捉用户输入是否合法
  4. 用得到的数整除以 10000,看其得到的数是否大于9,如果大于9的话,则提示用户输入的数大于5位数
  • 源码
def judgebit():
    print("------------------------")
    try:
        num=int(input("input your num\n"))
    except ValueError:
        print("你输的数字中含有非法字符,程序退出")
        exit(-1)
    testnum = 10000
    bitnum = 5
    if((num // testnum)>9):
        print("您输入的位数大于5位,请重新输入")
    else:
        if( num == 0 ):
            print("数字位数为1位")
        else:
            while((num//testnum) == 0):  #依次判断
                bitnum -= 1
                testnum /= 10
            print("输入的数位数为",bitnum,"位")
            

if __name__ == '__main__':
    judgebit()
  • 运行结果1
------------------------
input your num
123
输入的数位数为 3 位
  • 运行结果2
------------------------
input your num
1200000
您输入的位数大于5位,请重新输入
  • 运行结果3
------------------------
input your num
00000000000000002
输入的数位数为 1 位
  • 运行结果4
------------------------
input your num
asdasdasd
你输的数字中含有非法字符,程序退出

写在最后的话:

  • 无论每个知识点的难易程度如何,我都会尽力将它描绘得足够细致
  • 欢迎关注我的CSDN博客,IDYS’BLOG
  • 持续更新内容
    linux基础 | 数据通信(路由交换,WLAN) | Python基础 | 云计算
  • 如果你有什么疑问,或者是难题。欢迎评论或者私信我。你若留言,我必回复!
  • 虽然我现在还很渺小,但我会做好每一篇内容。谢谢关注!

你可能感兴趣的:(Python例题)