Python 3.8 "TypeError: 'int' object is not iterable" when trying to add an int to a list

Python 3.8 "TypeError: 'int' object is not iterable" when trying to add an int to a list

我正在编写一个程序,它生成一个从 1 到 100 的随机数,然后,如果该数字不在列表中,它会将其添加到列表中并继续这样做,直到有 100 个唯一数字在列表中。到目前为止,这是我的代码:

from random import randint
numbers = []
loop = True
while loop == True:
  number = randint(1, 100)
  if number in numbers:
      print("{} is there already!".format(number))
  else:
    numbers += number

但它一直给我这个错误:

Traceback (most recent call last):
  File "main.py", line 9, in <module>
    numbers += number
TypeError: 'int' object is not iterable

但是,我很确定,我的代码没有任何问题。我该怎么办?

如果您只想创建一个随机编号从 1 到 100 的列表

这可能是更高效的代码

my_list = list(range(1,101))
random.shuffle(my_list)
print(my_list)

您可以修复随机种子,这样输出会被打乱,但不会每次都改变 运行

my_list = list(range(1,101))
random.seed(123)
random.shuffle(my_list, random=None)
print(my_list)

至于您的代码,您不能对列表执行 += 使用 .append(它将您的号码作为参数并将其添加到列表末尾)

numbers.append(number)

文档:https://docs.python.org/2/tutorial/datastructures.html

只需将 numbers += number 替换为 numbers.append(number)

我认为您正尝试在数字列表中随机添加 1-100 之间的随机数,并且您不想多次添加任何内容

from random import randint
numbers = []
loop = True
while loop == True:
  number = randint(1, 100)
  if number in numbers:
      print("{} is there already!".format(number))
  else:
    numbers += [number]

这样就可以了。

我认为你应该使用 append 而不是 adding,因为它花费的时间少得多。 看起来像这样

from random import randint
numbers = []
loop = True
while loop == True:
  number = randint(1, 100)
  if number in numbers:
      print("{} is there already!".format(number))
  else:
    numbers.append(number)