Counting number of digits of input using python

点点圈 提交于 2020-01-30 05:57:25

问题


I am trying to count the number of digits of an input. However, whenever I input 10 or 11 or any two digit number, the output is 325. Why doesn't it work?

inputnumber = int(input())
countnumber = inputnumber
digitcount = 0
while countnumber > 0:
    digitcount += 1
    countnumber = countnumber/10

print(digitcount) 
# result is 325 when input is 10 or 11

回答1:


Your error mainly happened here:

countnumber=countnumber/10

Note that you are intending to do integer division. Single-slash division in Python 3 is always "float" or "real" division, which yields a float value and a decimal part if necessary.

Replace it with double-slash division, which is integer division: countnumber = countnumber // 10. Each time integer division is performed in this case, the rightmost digit is cut.

You also have to watch out if your input is 0. The number 0 is considered to be one digit, not zero.




回答2:


I would not convert that beautiful input to int to be honest.

print(len(input())

would be sufficient.

An easily understandable one liner that no one can complain about.

  • But of course, if negative sign bothers you like wisty said,

    len(str(abs(int (v))))
    

    will be safer for sure.

  • Again, if you are worried about the non numeric inputs like mulliganaceous said, you better cover that case.

    str = input()
    if str.isnumeric():
        print(len(str(abs(v))))
    else:
        print("bad input")
    



回答3:


The reason is that in python 3 the division of two integers yields a floating point number. It can be fixed using the // operator:

number = int(input())
digits_count = 0
while number > 0:
    digits_count += 1
    number = number // 10



回答4:


You must be using Python3, logically your function is right. You just have to change

countnumber = countnumber // 10

because Python3, // is floor division, meanwhile / is true division.

>>>print(1 / 10)
0.1
>>>print(1 // 10)
0

Btw, as @chrisz said above, you can just simply using the len() function to get the number of digits of the input

>>>print(len(input())


来源:https://stackoverflow.com/questions/50459313/counting-number-of-digits-of-input-using-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!