我收到一个TypeError,说在集合上运行while循环时,类型为'int'的对象没有len()。
import random
l = random.sample(range(100), 20)
s = set()
print(s)
print(len(s))
while len(s) < 4:
s = random.choice(l)
我从打印语句(set()
和0
)中获得了正确的输出,但是在到达while循环时却遇到了上述TypeError。
答案 0 :(得分:1)
那是因为您的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)
这将返回:
set()
0
50
,然后为您提供类型错误。因此,您会收到错误消息,因为s
最初是一个集合,然后将其切换到int
并通过while
循环返回,并且没有len
答案 1 :(得分:1)
您需要将结果添加到set
,否则您只是将set
重新分配给random.choice
的结果,int
是while len(s) < 4:
s.add(random.choice(l))
:< / p>
{{1}}