Питон - Блэкджек - PullRequest
       3

Питон - Блэкджек

0 голосов
/ 06 июня 2010
def showCards():
    #SUM
    sum = playerCards[0] + playerCards[1]
    #Print cards
    print "Player's Hand: " + str(playerCards) + " : " + "sum"
    print "Dealer's Hand: " + str(compCards[0]) + " : " + "sum"


    compCards = [Deal(),Deal()]    
    playerCards = [Deal(),Deal()]

Как мне добавить целочисленный элемент списка, содержащий значения?под #SUM ошибка может объединять списки как целые ...

Ответы [ 2 ]

1 голос
/ 06 июня 2010

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

Также есть руководство по стилю, которому должны следовать все программисты Python - это то, что помогает дополнительно отличать код Python от непостижимого осадка, часто встречающегося в коде, написанном на других языках, таких как, например, Perl или PHP. В Python есть более высокий стандарт, и вы его не соблюдаете. Style

Итак, переписываем ваш код вместе с некоторыми догадками, чтобы заполнить недостающие части.

from random import randint

CARD_FACES = {1: "Ace", 2: "2", 3: "3", 4: "4", 5: "5", 6: "6", 7: "7", 8: "8", 
              9: "9", 10: "10", 11: "Jack", 12: "Queen", 13: "King"}

def deal():
    """Deal a card - returns a value indicating a card with the Ace
       represented by 1 and the Jack, Queen and King by 11, 12, 13
       respectively.
    """
    return randint(1, 13)

def _get_hand_value(cards):
    """Get the value of a hand based on the rules for Black Jack."""
    val = 0
    for card in cards:
        if 1 < card <= 10:
            val += card # 2 thru 10 are worth their face values
        elif card > 10:
            val += 10 # Jack, Queen and King are worth 10

    # Deal with the Ace if present.  Worth 11 if total remains 21 or lower
    # otherwise it's worth 1.
    if 1 in cards and val + 11 <= 21:
        return val + 11
    elif 1 in cards:
        return val + 1
    else:
        return val    

def show_hand(name, cards):
    """Print a message showing the contents and value of a hand."""
    faces = [CARD_FACES[card] for card in cards]
    val = _get_hand_value(cards)

    if val == 21:
        note = "BLACK JACK!"
    else:
        note = ""

    print "%s's hand: %s, %s : %s %s" % (name, faces[0], faces[1], val, note)


# Deal 2 cards to both the dealer and a player and show their hands
for name in ("Dealer", "Player"):
    cards = (deal(), deal())
    show_hand(name, cards)

Ну хорошо, так что я увлекся и фактически написал все это. Как писал другой автор, сумма (list_of_values) - путь, но на самом деле он слишком упрощен для правил Блэк Джек.

1 голос
/ 06 июня 2010

Чтобы найти здесь ценность руки, вы можете просто сделать что-то вроде

compSum = sum(compCards)

Но похоже, что вы, возможно, попробовали это из второй части своего поста, упомянув #SUM, я не знаю, что вы пытались сказать. Это будет работать, только если Deal () возвращает целые числа.

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