我想测试一个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位数的数字并以0开头时,len()函数会识别这个数字为9长。帮助plz
发布于 2014-11-02 15:52:58
提供yout代码,这是因为您将输入转换为int,然后将其转换为string (输入自动类型在Python3中为str,如果使用Python2,请不要忘记像hackaholic那样转换为str或使用raw_input )。
替换
number = int(input("Enter number: "))
number = str(number)
通过
number = input("Enter number: ")
所以数字将直接是一个字符串。你可以在上面使用len()。它甚至适用于0000000000。
发布于 2014-11-02 15:54:21
将其强制为整数时,输入将值作为字符串。
number = input("Enter number: ")
if len(number) != 10:
print ("Not 10 digits long")
else:
print ("Good")
len
函数工作在字符串上
如果您使用python2.x最好使用raw_input("Enter Number: ")
发布于 2014-11-02 16:03:19
以0开头的数字在python中以8(八进制数)表示。您需要将它们转换为字符串来计数它们的数字:
# Not converted
number1 = 0373451234
print "number: "+str(number1)+" digits:"+str(len(str(number1)))
>号码: 65950364位数:8
# Converted
number2 = "0373451234"
print "number: "+str(number2)+" digits:"+str(len(str(number2)))
>号码: 0373451234位数:10
https://stackoverflow.com/questions/26701080
复制相似问题