使用python计算输入的位数

时间:2018-05-22 03:25:56

标签: python python-3.x decimal division digits

我正在尝试计算输入的位数。但是,每当我输入1011或任意两位数时,输出都为325。为什么不起作用?

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

5 个答案:

答案 0 :(得分:4)

你的错误主要发生在这里:

countnumber=countnumber/10

请注意,您打算进行整数除法。 Python 3 中的单斜杠除法总是" float"或"真实"除法,如果需要,产生浮点值和小数部分。

将其替换为双斜线除法,即整数除法:countnumber = countnumber // 10。在这种情况下,每次执行整数除法时,最右边的数字都会被切断。

您还必须注意输入是否为0.数字0被认为是一位数,而不是零。

答案 1 :(得分:2)

说实话,我不会将这个美妙的输入转换成int。

print(len(input())

就足够了。

一个容易理解的单线眼镜,没有人可以抱怨。

  • 但是,当然,如果负面信号困扰你,你会喜欢这个said

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

    肯定会更安全。

  • 同样,如果您担心像mulliganaceous said这样的非数字输入,那么最好覆盖这种情况。

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

答案 2 :(得分:1)

原因是在python 3中,两个整数的除法产生一个浮点数。可以使用//运算符修复它:

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

答案 3 :(得分:1)

你必须使用Python3,逻辑上你的功能是对的。你只需要改变

countnumber = countnumber // 10

因为Python3,//是分区,同时/是真正的分裂。

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

顺便说一句,正如@chrisz上面所说,你可以简单地使用len()函数来获取输入的位数

>>>print(len(input())

答案 4 :(得分:1)

num = int(input())
count = 0
while num > 0:
  count += 1
  num = num // 10
print(count)