我正在尝试计算输入的位数。但是,每当我输入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
答案 0 :(得分:4)
你的错误主要发生在这里:
countnumber=countnumber/10
请注意,您打算进行整数除法。 Python 3 中的单斜杠除法总是" float"或"真实"除法,如果需要,产生浮点值和小数部分。
将其替换为双斜线除法,即整数除法:countnumber = countnumber // 10
。在这种情况下,每次执行整数除法时,最右边的数字都会被切断。
您还必须注意输入是否为0.数字0被认为是一位数,而不是零。
答案 1 :(得分:2)
说实话,我不会将这个美妙的输入转换成int。
print(len(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)