#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. Я пытался это сделать, но я не уверен, как лучше всего это использовать. Перетасовка значений генерирует их по-другому, но не удаляет дубликаты.