Python:给定一个不超过5位的正整数,判断有几位,,方法一:作比较[ro


方法一:作比较

[root@python markPy]# cat five.py #!/usr/bin/python3a=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 // 10000Out[1]: 0                除以10000为零证明是小于5位数In [2]: 6666 // 1000Out[2]: 6                但是如果能被1000整除,它就是一个4位数In [3]: 6666 // 100Out[3]: 66In [4]: 6666 // 10Out[4]: 666In [5]: 6666 // 1Out[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/python3nnumber=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/python3number = 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)

欢迎补充~

  

Python:给定一个不超过5位的正整数,判断有几位

评论关闭