Нужна помощь с моей программой случайных карт

1

Я делаю программу с тасовыми картами. В конце я использую for loop для распечатки 10 случайных карт, но я не знаю, что с ним не так.

В конце deal_card(card), почему я помещаю card, потому что мой h/w так говорит, но если бы у вас был другой ответ, я буду хорошо слушать то, что вы говорите.

Это моя программа:

import random

def define_cards():
    rank_string = ("ace","two","three","four","five","six","seven","eight","nine","ten","jack","queen","king")
    suit_string = ("clubs","diamonds","hearts","spades")
    cards = []
    for suit in range(4):
        for rank in range(13):
            card_string = rank_string[rank] + " of " + suit_string[suit]
            cards.append(card_string)
        return cards

def create_deck(deck):
    for i in range(52):
        deck.append(i)
        return

def shuffle_deck(deck):
    random.shuffle(deck)
    return

def deal_card(deck):
    return deck.pop(0)

deck=[]

create_deck(deck)
shuffle_deck(deck)
print "The first 10 cards are:"
for i in range(10):             # I don't know why won't work
    deal_card(card)
    print define_cards()

Распечатайте chould:

The first 10 cards are:
queen of hearts
ten of diamonds
...
Теги:

3 ответа

6
Лучший ответ

Поскольку ваш define_cards уже создает список имен карт, вы должны использовать его для генерации колоды вместо create_deck. Затем в цикле for просто откройте карту и распечатайте ее.

deck = define_cards()
shuffle_deck(deck)
print "The first 10 cards are:"
for i in range(10):
    card = deal_card(deck)
    print card

Просто сделайте это, чтобы программа распечатала десять карт с верхней части колоды. Тем не менее, define_cards все еще имеет небольшую ошибку. Вы можете это заметить? Подсказка: позиционирование return.

  • 0
    Разве не должно быть только 4 пробела, того же уровня, что и for suit in range(4) и под cards.append(card_string) или ниже cards.append(card_string) 12 пробелами? Я пытаюсь работать в обе стороны, что разные ??
  • 0
    @phhnk: В зависимости от отступа return либо внутри одного из циклов for либо после обоих. Вы хотите после того, как for петлях завершения, поэтому 4 пробела. С версией в вашем вопросе (8 мест) вы получаете только клубные карты.
Показать ещё 1 комментарий
3

Половина кода лишняя:

>>> import random
>>> deck = range(1,52)
>>> random.shuffle(deck)
>>> deck
[4, 38, 40, 18, 35, 44, 50, 22, 49, 26, 8, 45, 14, 20, 25, 34, 37, 51, 42, 29, 24, 28, 27, 30, 7, 47, 23, 3, 10, 2, 9, 39, 6, 16, 12, 17, 11, 41, 33, 48, 5, 1, 36, 21, 13, 32, 43, 19, 15, 31, 46]
  • 2
    В вашей колоде отсутствует карта ...
  • 0
    Я знаю, что не так ясно сформулировал вопрос, но я все еще ценю вашу помощь, правда. ПОБЛАГОДАРИТЬ
1

Возможно, вам захочется подумать о создании класса Card и класса Deck для поддержки колоды карт. Это даст вам более четкий код.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню