This is my first cry for help on this site. I searched for the answer here, but nothing really clears it for me.
I am trying to learn Python. I have a class in my chapter. The following code:
class Character: def __init__(self, name, initial_health): self.name = name self.health = initial_health self.inventory = [] def __str__(self): s = "Name: " + self.name s += "| Health: " + str(self.health) s += "| Inventory: " + str(self.inventory) return s def grab(self, item): self.inventory.append(item) me = Character("vic", 37) me.grab("pencil") me.grab("paper") print str(me)
... produces:
Name: vic| Health: 37| Inventory: ['pencil', 'paper']
But the following code, which seems pretty similar to me, prints memory cells, not the variables themselves:
import random SUITS = ['C', 'S', 'H', 'D'] RANKS = ['A', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K'] VALUES = {'A':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9, 'T':10, 'J':10, 'Q':10, 'K':10} # define card class class Card: def __init__(self, suit, rank): if (suit in SUITS) and (rank in RANKS): self.suit = suit self.rank = rank self.value = self.get_value() else: print "Invalid card: " + str(suit) + str(rank) def __str__(self): return str(self.suit) + str(self.rank) def get_cardDetails(self): return self.suit + self.rank + ": " + str(self.value) def get_suit(self): return self.suit def get_rank(self): return self.rank def get_value(self): value = VALUES[self.rank] return value class Hand: def __init__(self, card1, card2): self.cardCount = 0 self.cards = [] self.cards.append(card1) self.cardCount += 1 self.cards.append(card2) self.cardCount += 1 self.value = self.get_value() print "Dealed hand: " + str(self.cards[0]) + str(self.cards[1]) print "Dealed hand: " + str(self.cards) def __iter__(self): return iter(self.cards) def __str__(self): return str(self.cards) def get_details(self): print "Hand: " for each in self.cards: print " -" + str(each) + ": " + str(each.value) s = "Cards: " + str(self.cardCount) + \ " | Hand: " + str(self.cards) + \ " | Total Value: " + str(self.value) + " |" return s def add_card(self, card): self.cards.append(card) self.cardCount += 1 self.value = self.get_value() print "Added: " + str(card) def get_value(self): value = 0 for each in self.cards: value = value + each.value return value c1 = Card("C", "2") c2 = Card("C", "3") h = Hand(c1, c2) print str(h)
Output:
Dealed hand: C2C3 Dealed hand: [<__main__.Card instance at 0x00E4F558>, <__main__.Card instance at 0x00E543C8>] [<__main__.Card instance at 0x00E4F558>, <__main__.Card instance at 0x00E543C8>]
Iām sure that something must be missing for me - Iām still studying it. Any help would be appreciated. Thank you in advance. And sorry for the long post.