Использование random.choice () в Python3 - PullRequest
1 голос
/ 06 ноября 2019

Я получаю сообщение об ошибке, когда пытаюсь назначить случайную вершину из 3 возможных вершин переменной c.

#Establish locations for the 3 vertices
vertex1 = (0,0)
vertex2 = (canv_width,0)
vertex3 = (canv_width//2,canv_height)
c = random.choice(vertex1,vertex2,vertex3)

Ошибка:

TypeError: choice() takes 2 positional arguments but 4 were given

В сети кто-то сказал попробоватьи оберните последовательность выбора в списке. Итак, я попробовал:

c = random.choice[vertex1,vertex2,vertex2]

ошибка:

TypeError: 'method' object is not subscriptable

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

кто-то сказал, чтобы попытаться обернуть последовательность выбора в списке

Они были правы. Но вы не должны заменять круглые скобки квадратными.

Вы хотите передать список в качестве аргумента функции random.choice ().

c = random.choice([vertex1,vertex2,vertex2])

Он создаетновый список, содержащий ваши вершины, и передает его в качестве аргумента в random.choice (), эквивалентный следующему:

choices = [vertex1, vertex2, vertex3]
c = random.choice(choices)
0 голосов
/ 06 ноября 2019

Вам нужно обернуть элементы в итерируемое, да, но затем вам нужно вызвать функцию, используя круглые скобки;во втором примере вы пропустили эти круглые скобки, и это является причиной вашей второй ошибки.

Попробуйте:

c = random.choice([vertex1, vertex2, vertex2])

, что аналогично созданию списка со всеми возможными вариантами выбора:

my_options = [vertex1, vertex2, vertex2]  # a simple list with elements
c = random.choice(my_options)             # this selects one element from the list

Документы для random.choice().

...