Неправильное значение (Нет) отображается, когда я вызываю переменную, определенную в предыдущей функции - PullRequest
0 голосов
/ 26 апреля 2020

Я создал программу игры в покер и начал с функции для создания всей колоды и другой функции для ее перемешивания. Они оба работали просто отлично. Я смог распечатать колоду и перемешал колоду. Но в другой функции ' hand () ' я попытался сделать из нее функцию, которая дает игроку первые две карты, используя словарь переменных deckshuffle из предыдущей колоды перемешанных открытки. Но он показывает ошибку, говорящую о том, что индекс списка находится вне диапазона, поэтому я решил вызвать словарь deckshuffle , чтобы увидеть его значение, и он показал две пустые фигурные скобки вместо целого словаря, полного перетасованных карт

<ipython-input-57-462bc7e6b87f> in hand()
     28 def hand():
     29     liste = list(deckshuffle.items())
---> 30     playerhand.update({liste[0][0]:liste[0][1]})
     31     playerhand.update({liste[1][0]:liste[1][1]})
     32     liste.pop(0)

IndexError: list index out of range

Это мой код -

deckvalues = {}


def cards():
    for suit in suits:
        for rank in ranks:
            deckvalues.update({rank+' of '+suit: values[rank]})
    return deckvalues


def shufflecards():
    lis = list(deckvalues.items())
    random.shuffle(lis)
    deckshuffle = dict(lis)
    deckshuffle = deckshuffle
    return deckshuffle

playerhand = {}
dealerhand = {}
def hand():
    liste = list(deckshuffle.items())
    playerhand.update({liste[0][0]:liste[0][1]})
    playerhand.update({liste[1][0]:liste[1][1]})
    liste.pop(0)
    liste.pop(0)

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

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

Во-вторых, вы не вызываете свою глобальную переменную значений колоды, когда делаете свою руку. Вы не хотите делать именно то, что сказал Роман, но близко.

Вот что я бы порекомендовал:

   deckvalues = shufflecards() #This will load your shuffled deck values into your global variable. 
   liste = deckvalues
0 голосов
/ 26 апреля 2020

Попробуйте заменить это:

liste = list(deckshuffle.items())

на это:

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