Why am I getting a "TypeError: object of type 'int' has no len()" on a set?
Why am I getting a "TypeError: object of type 'int' has no len()" on a set?
我收到一个 TypeError,说 'int' 类型的对象在 运行 集合上的 while 循环时没有 len()。
import random
l = random.sample(range(100), 20)
s = set()
print(s)
print(len(s))
while len(s) < 4:
s = random.choice(l)
我从 print 语句(set()
和 0
)得到了正确的输出,但是当它到达 while 循环时出现了前面提到的 TypeError。
那是因为您的 while
循环正在将 s = random.choice(l)
处的值切换为整数。参见:
import random
l = random.sample(range(100), 20)
s = set()
print(s)
print(len(s))
while len(s) < 4:
s = random.choice(l)
print(s)
这个returns:
set()
0
50
然后给你类型错误。所以你得到错误是因为 s
最初是一个集合,然后它被切换到 int
并通过 while
循环返回并且没有 len
您需要将结果添加到 set
,否则您只是将 set
重新分配给 random.choice
的结果,这是一个 int
:
while len(s) < 4:
s.add(random.choice(l))
我收到一个 TypeError,说 'int' 类型的对象在 运行 集合上的 while 循环时没有 len()。
import random
l = random.sample(range(100), 20)
s = set()
print(s)
print(len(s))
while len(s) < 4:
s = random.choice(l)
我从 print 语句(set()
和 0
)得到了正确的输出,但是当它到达 while 循环时出现了前面提到的 TypeError。
那是因为您的 while
循环正在将 s = random.choice(l)
处的值切换为整数。参见:
import random
l = random.sample(range(100), 20)
s = set()
print(s)
print(len(s))
while len(s) < 4:
s = random.choice(l)
print(s)
这个returns:
set()
0
50
然后给你类型错误。所以你得到错误是因为 s
最初是一个集合,然后它被切换到 int
并通过 while
循环返回并且没有 len
您需要将结果添加到 set
,否则您只是将 set
重新分配给 random.choice
的结果,这是一个 int
:
while len(s) < 4:
s.add(random.choice(l))