Не понимаю, почему элементам 2D списка присваиваются одинаковые значения - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь раздать карты на две руки (каждая из которых находится в списке). Руки держатся во втором списке. Но карты игрока 1 точно такие же, как у игрока 2, как будто у меня есть повторяющийся список в моем внешнем списке. Это из-за изменчивости?

Фрагмент кода должен помочь объяснить. Помогите! Что я делаю не так и как я могу это исправить?

Код

no_of_cards_each = 3
no_of_players = 2
cards = ["AH", "2H", "3H", "4H", "5H", "6H", "7H"]
player_hands = []

for _ in range(no_of_players):
    player_hands.append([])

print(f"Empty hands = {player_hands}")

for card_num in range(no_of_cards_each):
    print(f"Card Num is {card_num}")
    for player_num in range(no_of_players):
        print(f"Player number is {player_num}")
        next_card = cards.pop(0)
        player_hands[player_num].append(next_card)
        print(f"Player number {player_num} got dealt a {next_card}")

print(f"The final hands look like {player_hands}")

Вывод

Empty hands = [[], []]
Card Num is 0
Player number is 0
Player number 0 got dealt a AH
Player number is 1
Player number 1 got dealt a 2H
Card Num is 1
Player number is 0
Player number 0 got dealt a 3H
Player number is 1
Player number 1 got dealt a 4H
Card Num is 2
Player number is 0
Player number 0 got dealt a 5H
Player number is 1
Player number 1 got dealt a 6H

Последние руки выглядят как [['AH', '3H', '5H'], ['2H', '4H', '6H']].

Процесс завершен с кодом выхода 0.

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

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

Должен ли я снять вопрос (если это возможно) или оставить его здесь? Если ничего другого, это может быть полезным фрагментом для других, сталкивающихся с проблемами с 2D-списками:)

0 голосов
/ 08 октября 2019

Разве у первого игрока нет ['AH', '3H', '5H'], а у игрока 2 - ['2H', '4H', '6H']? Что вы подразумеваете под своими карточками одинаковыми

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...