TypeError:类型为'int'的对象没有len()*减*

时间:2019-03-25 04:11:05

标签: python python-3.x random

我试图找出是否有办法通过从4中减去变量数来进行小的计算

number_1_raw = random.randrange(1, 1000)
number_1_len = len(number_1_raw)
number_of_zeros = 4 - number_1_len
print("0" * number_of_zeros + number_1_raw)

我希望脚本给我一个1-3的答案,但是 代码执行不正确。

所需的输出将是这样的: 0617或0071或0008等。

请帮助解决此问题,谢谢!

5 个答案:

答案 0 :(得分:0)

您不能用整数调用len。

  

len()函数返回一个对象中的项目数。   当对象是字符串时,len()函数返回   字符串中的字符。

所以您可以做的是

  

number_1_len = len(str(number_1_raw))

str将int类型更改为字符串类型。

答案 1 :(得分:0)

此行number_1_len = len(number_1_raw) 有问题。您将得到一个整数值number_1_len,它的长度为1。这个数字_1_len实际上是您想要的零个数字

答案 2 :(得分:0)

我认为您需要:

import random

number_1_raw = random.randrange(1, 1000)
number_1_len = len(str(number_1_raw))
number_of_zeros = 4 - number_1_len
print(number_of_zeros)
result = "0" * number_of_zeros

print(result+str(number_1_raw))

输出

1            # number of zeros
0801

您的代码有什么问题

您正试图找到整数number_1_raw的长度,这会导致错误,因为您需要使用可迭代数或字符串来查找该对象的长度。首先将其转换为字符串,然后在其上使用len

此外,在print语句中,您需要将number_1_raw转换为字符串,以便可以附加它。您无法在+str上执行int操作。

答案 3 :(得分:0)

首先,我需要更好地了解正在发生的事情...

拳头

number_1_raw = random.randrange(1, 1000)

random.randrange返回一个数字,可能是整数。

第二

number_1_len = len(number_1_raw)

有一个问题,因为number_1_raw是一个int而len是一个用于计算数组,对象中元素的数量的函数...但是number_1_len不是...这是一个int,而len不能计算一个诠释元素...

重要的是要显示所有错误,并更好地说明您要做什么...

答案 4 :(得分:0)

我在特定行中添加了 str() 以便您的代码运行时没有任何错误

import random
number_1_raw = str(random.randrange(1, 1000)) #I added the str() in this line
number_1_len = len(number_1_raw)
number_of_zeros = 4 - number_1_len
print("0" * number_of_zeros + number_1_raw)

它完全是您的代码,除了修改后的行兄弟。 你写得很好,兄弟,但一个小的数据类型错误只有你在学习时才能纠正它们。 我希望这是有用的:)