尝试创建一副牌并随机打印。当我尝试运行我的代码时,它会给我这条消息:
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()
答案 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()
这么多错误,给它一个读,
你混合DECK
和deck
他们不可互换。
您试图在不调用函数的情况下调用函数。需要在最后使用()
调用函数。
你错过拼写append
你在进入For循环之外调用deal_deck()
的for循环之前删除了一张卡片,这就是为什么你没有52张牌进入for循环的原因。
有改进此代码的方法,但我只是希望您了解自己的错误,以免将来制作错误。
答案 1 :(得分:2)
这里有几个错误
create_deck
什么都不做,所以您没有初始化deck
DECK
(不一样,因为python区分大小写),所以当你执行deck shuffle时你得到一个错误,因为DECK
是一个空列表。(并且MooingRawr指出了你修复这些错误后会遇到的下一个错误:))