问题
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