Как генерировать неповторяющиеся значения из списка, на который ссылается a для каждого цикла?

#python #python-3.x

#python #python-3.x

Вопрос:

Я пытаюсь поместить номинальное значение игральной карты (от туза до короля) на карту, нарисованную черепахой. Основной код общей функции размещает карты на доске (в стиле пасьянса) каскадным образом, используя a для каждого цикла (см. Ниже). Когда я использую код place_face_value() для размещения значения, он повторяет числа, и ни один из других вопросов здесь, похоже, не касается того, что я ищу.

Я попытался использовать добавление нового списка с уже использованными значениями (вы можете увидеть некоторые остатки этой попытки в моем коде) и создание набора неиспользуемых значений для применения к будущим итерациям for каждого цикла. Я не мог заставить это работать.

 #This function deals with printing the values onto each card
        def place_face_value():
            card_values = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
            position = pos()
            goto(position)
            face_value = sample(card_values, 1)
            values_used = []

            #Goto top left and print value
            seth(90)
            forward(80)
            seth(180)
            forward(55)
            write(face_value)
            #Goto bottom right and print flipped value
            seth(270)
            forward(160)
            seth(0)
            forward(110)
            write_upside_down(face_value)#card value
            goto(position)
            values_used.append(face_value)

#The main code of the function takes the number of cards and prints them accordingly.
        if num_cards > 0:
            which_stack() #choose stack        
            #Place cards, and cascade them by 50px
            for cards in range(num_cards): 
                seth(270)
                forward(50)
                which_suit()
                place_face_value()
  

По сути, приведенный выше код должен делать то, что он делает сейчас (размещайте карты таким же образом и применяйте числа к верхнему левому и нижнему правому углам), но без повторения каких-либо значений, уже помещенных в одну и ту же «стопку» каскадных карт (например, столбцы solitaire). Я не уверен, как сделать каждую итерацию для каждого цикла достаточно четкой, чтобы я мог печатать список без повторов (поскольку каждая карта должна выглядеть отдельной).

Комментарии:

1. Создайте новый shuffle общий список и выполните итерацию по нему.

2. используется random.shuffle(list) для создания списка с элементами в случайном порядке, а затем вы можете получать элементы один за другим.

3. Я пытался это сделать, но я не уверен, как лучше всего это использовать. Перетасовка значений генерирует их по-другому, но не удаляет дубликаты.