'Counting number of digits of input using python
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
Solution 1:[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.
Solution 2:[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.
Solution 3:[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
Solution 4:[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())
Solution 5:[5]
num = int(input())
count = 0
while num > 0:
count += 1
num = num // 10
print(count)
Solution 6:[6]
def digits(number):
number = str(number)
lenght = len(number)
return lenght
print(digits(25)) # Should print 2
print(digits(144)) # Should print 3
print(digits(1000)) # Should print 4
print(digits(0)) # Should print 1
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | |
Solution 3 | Elisha |
Solution 4 | Cypherius |
Solution 5 | Prakash Rajpurohit |
Solution 6 | sv001001 |