我想测试一个10位数的长度是10,但只要数字从0开始,len()只计算9。 我该如何解决这个问题?
目前:
某个东西是由数字组成的变量,我将变量转换为字符串,然后创建此语句。
if len(something) != 10:
(do something)
我目前的代码:
number = int(input("Enter number: "))
number = str(number)
if len(number) != 10:
print ("Not 10 digits long")
else:
print ("Good")
如果我输入一个10位数的数字就可以了,但是,当我输入一个10位数的数字并从零开始时,len()函数将该数字识别为9长。帮助PLZ
答案 0 :(得分:2)
提供你的代码,因为你将输入转换为int,然后将其转换为字符串(输入自动类型是Python3中的str,如果你使用Python2,请不要忘记施放为str或使用像hackaholic这样的raw_input)。
替换
number = int(input("Enter number: "))
number = str(number)
通过
number = input("Enter number: ")
所以数字将直接是一个字符串。你可以使用len()。它甚至适用于0000000000
答案 1 :(得分:1)
你强制它为整数,输入取值为字符串
number = input("Enter number: ")
if len(number) != 10:
print ("Not 10 digits long")
else:
print ("Good")
len
函数适用于字符串
如果你使用python 2.x更好地使用raw_input("Enter Number: ")
答案 2 :(得分:0)
以0开头的数字以python中的基数8(八进制数)表示。您需要将它们转换为字符串以计算其数字:
# Not converted
number1 = 0373451234
print "number: "+str(number1)+" digits:"+str(len(str(number1)))
<强>&GT;编号:65950364位数:8
# Converted
number2 = "0373451234"
print "number: "+str(number2)+" digits:"+str(len(str(number2)))
<强>&GT;编号:0373451234位数:10