Из документов random.choice
он принимает последовательность .
random.choice (seq)
Возвращает случайный элемент из непустой последовательности seq .
Если seq пусто, возникает IndexError
.
Таким образом, неправильно указывать в каждом элементе num
, то есть int
, что приведет к TypeError
:
File "/.../python3.8/random.py", line 288, in choice
i = self._randbelow(len(seq))
TypeError: object of type 'int' has no len()
. Вам нужно будет ввести num
сам, а затем он возвращает случайный элемент из него.
>>> num = [1,2,3,4,5,6]
>>> print("selected :", random.choice(num))
selected : 4
>>> print("selected :", random.choice(num))
selected : 5
>>> print("selected :", random.choice(num))
selected : 2
A for
l oop здесь не имеет большого смысла (отсюда и вопросы в комментариях), потому что вам не нужно передавать каждый элемент random.choice
.
Вы сказали, что:
Я зацикливаю список, потому что если выбран 1 элемент, я хочу, чтобы он был удален в списке.
Я не уверен, какова ваша настоящая цель для этого, но, возможно, while
l oop более уместно. Например, вы можете продолжать выбирать случайные элементы из списка и удалять его из списка , пока список не пустой.
>>> num = [1, 2, 3, 4, 5, 6]
>>> while len(num) > 0:
... n = random.choice(num)
... print("selected : ", n)
... num.remove(n)
... print("num is now: ", num)
...
selected : 3
num is now: [1, 2, 4, 5, 6]
selected : 5
num is now: [1, 2, 4, 6]
selected : 4
num is now: [1, 2, 6]
selected : 1
num is now: [2, 6]
selected : 6
num is now: [2]
selected : 2
num is now: []