"Roelof Wobben" <[email protected]> wrote
So i have this programm now :
class Deck:
def __init__(self):
self.cards = []
for suit in range(4):
for rank in range(1, 14):
self.cards.append(Card(suit, rank))
def deal(self, hands, num_cards=999):
num_hands = len(hands)
for i in range(num_cards):
if self.is_empty(): break # break if out of cards
card = self.pop() # take the top card
hand = hands[i % num_hands] # whose turn is next?
hand.add(card) # add the card to the hand
def shuffle(self):
import random
num_cards = len(self.cards)
for i in range(num_cards):
j = random.randrange(i, num_cards)
self.cards[i], self.cards[j] = self.cards[j],
self.cards[i]
def remove(self, card):
if card in self.cards:
self.cards.remove(card)
return True
else:
return False
def is_empty(self):
return (len(self.cards) == 0)
But now Im getting this error message:
Traceback (most recent call last):
File "C:\Users\wobben\workspace\oefeningen\src\test.py", line 126,
in <module>
game.deck.deal([hand], 13)
File "C:\Users\wobben\workspace\oefeningen\src\test.py", line 24,
in deal
card = self.pop() # take the top card
AttributeError: Deck instance has no attribute 'pop'
What went wrong here.
The error tells you what is wrong, the Deck has no attribute called
pop.
Can you see a pop anywhere?
So if the code you copied has an error how should it assign a card?
Where are the cards stored? How would you get the first card from
the collection? Does that work?
Think about what the error is telling you and think about how you
would fix it. If you don't understand what the error is saying then
tell
us and we can explain it, but in this case its pretty clearly stated
and is one you have seen before.
--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor