zoukankan      html  css  js  c++  java
  • Python:给定一个不超过5位的正整数,判断有几位

    方法一:作比较

    [root@python markPy]# cat five.py 
    #!/usr/bin/python3
    a=int(input(">>>>"))
    if a<10:             
        print(1)
    elif a<100:   #第一个条件已经过滤了大于9,所以这里区间是11到100
        print(2)
    elif a<1000:
        print(3)
    elif a<10000:
        print(4)
    else:
        print(5)

    方法二:使用整除实现,除完后如果是个0或不是个0,这种方法引入了计算,效率会降低,所以能加就不要减,能乘就不要除,能不计算就不计算

    i = int(intput('>>>')
    if i // 10000:
        print(5):
    elif i // 1000:
        print(4)
    elif i // 100:
        print(3)
    elif i // 10:
        print(2)
    else:
        print(1)
    
    分析:假设是在5位的情况下,不考虑其他状况
    In [1]: 6666 // 10000
    Out[1]: 0                除以10000为零证明是小于5位数
    
    In [2]: 6666 // 1000
    Out[2]: 6                但是如果能被1000整除,它就是一个4位数
    
    In [3]: 6666 // 100
    Out[3]: 66
    
    In [4]: 6666 // 10
    Out[4]: 666
    
    In [5]: 6666 // 1
    Out[5]: 6666

    方法三:

    a=int(input(">>>"))
    if a<0:
        print("Format is wrong")
    elif a<100000:    ##限定5位
        if a<10:
            print(1)
        elif a<100:
            print(2)
        elif a<1000:
            print(3)
        elif a<10000:
            print(4)
        else:   
            print(5)
    else:
        print("请输入一个不超过5位的数")

    方法四:字符串处理实现

    #!/usr/bin/python3
    nnumber=input(">>>>")
    length=len(nnumber)
    if length>4:
        print(5)
    elif length>3:
        print(4)
    elif length>2:
        print(3)
    elif length>1:
        print(2)
    else:
        print(1)

    方法五:折半实现

    #!/usr/bin/python3
    number = int(input("number >> "))
    if number >= 100:       ##直接从100开始折
        if number >= 10000:
            print("5")
        elif number >= 1000:
            print("4")
        else:
            print("3")
    else:
        if number >= 10:
            print("2")
        else:
            print("1")

    方法六:math实现,这种方法比除法的更慢,如果循环100万次就很明显

    number=int(input("输入一个不超过5位的正整数: ")
    if a<=0 or a>=100000:
        print('请输入一个不超过5位的正整数')
    else:
        import math
        b=int(math.log10(a)+1)
        print(b)
    

    欢迎补充~

      

  • 相关阅读:
    MYSQL利用merge存储引擎来实现分表
    IoC原理及实现
    prometheus + grafana安装部署(centos6.8)
    PHP Laravel定时任务Schedule
    排序算法杂谈(三) —— 归并排序的非递归实现
    排序算法杂谈(二) —— 冒泡排序的递归实现
    排序算法杂谈(一) —— 量化数组的有序程度
    排序算法(七) —— 快速排序
    排序算法(六) —— 归并排序
    排序算法(五) —— 堆排序
  • 原文地址:https://www.cnblogs.com/reid21/p/10421544.html
Copyright © 2011-2022 走看看