我试图计算输入数字的位数。但是,每当我输入10
或者11
或者任何两位数时,输出结果都是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
int
再转换为str
。input()
已经是一个字符串了。只需要使用len(input())
即可。如果要处理负数,可以使用len(str(abs(int(input()))))
。 - Austincountnumber = countnumber/10
不会执行你想要的整数地板除法//
,它会执行精确的(浮点数)除法,并且countnumber
将变成一个浮点数。然后,当你用完数字时,你的迭代将不会终止,它将继续进行,每次迭代countnumber
都会变成一个越来越小的浮点数,直到达到1e-323,最后下溢,但是你得到的数字计数(325)是错误的。 - smci