打印一副牌(Python)

时间:2016-10-28 18:51:17

标签: python blackjack

尝试创建一副牌并随机打印。当我尝试运行我的代码时,它会给我这条消息:

Traceback (most recent call last):
  File "C:\Users\Tobi01\Downloads\blackjack (1).py", line 31, in <module>
    deal_deck()
  File "C:\Users\Tobi01\Downloads\blackjack (1).py", line 14, in deal_deck
    card = random.choice(DECK)
  File "C:\Python31\lib\random.py", line 256, in choice
    return seq[int(self.random() * len(seq))]  # raises IndexError if seq is empty
IndexError: list index out of range

有人能告诉我我做错了吗?

 import random


def create_deck():
    for suit in SUITS:
        for pip in PIPS:
            card = (suit,pip)
            deck.apppend(card)




def deal_deck():
    card = random.choice(DECK)
    deck.remove(card)
    return card



CLUB = "\u2663"
HEART = "\u2665"
DIAMOND = "\u2666"
SPADE = "\u2660"

PIPS = ("A","2","3","4","5","6","7","8","9","10","J","Q","K")
SUITS = (CLUB, SPADE, DIAMOND, HEART)

DECK = []

create_deck
deal_deck()




for i in range(13):
    for j in range(4):
        pip,suit = deal_deck
        print(suit + pip, end = " ")
    print()

2 个答案:

答案 0 :(得分:2)

import random


def create_deck():
    for suit in SUITS:
        for pip in PIPS:
            card = (suit,pip)
            deck.append(card) #append not apppend




def deal_deck():
    card = random.choice(deck) #deck not DECK
    deck.remove(card)
    return card



CLUB = "\u2663"
HEART = "\u2665"
DIAMOND = "\u2666"
SPADE = "\u2660"

PIPS = ("A","2","3","4","5","6","7","8","9","10","J","Q","K")
SUITS = (CLUB, SPADE, DIAMOND, HEART)

deck = [] #deck not DECK 

create_deck() #create_deck() not create_deck
#deal_deck() #why remove a card for no reason no...


for i in range(13):
    for j in range(4):
        pip,suit = deal_deck() #deal_deck() not deal_deck
        print(suit + pip, end = " ")
    print()

这么多错误,给它一个读,

你混合DECKdeck他们不可互换。

您试图在不调用函数的情况下调用函数。需要在最后使用()调用函数。

你错过拼写append

你在进入For循环之外调用deal_deck()的for循环之前删除了一张卡片,这就是为什么你没有52张牌进入for循环的原因。

有改进此代码的方法,但我只是希望您了解自己的错误,以免将来制作错误。

答案 1 :(得分:2)

这里有几个错误

    没有括号的
  • create_deck什么都不做,所以您没有初始化deck
  • 你初始化一个大写DECK(不一样,因为python区分大小写),所以当你执行deck shuffle时你得到一个错误,因为DECK是一个空列表。

(并且MooingRawr指出了你修复这些错误后会遇到的下一个错误:))