Question - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Question (/thread-21491.html) |
Question - pythonprogrammer - Oct-02-2019 Card = collections.namedtuple('Card',['rank','suit']) class FrenchDeck: ranks = [str(n) for n in range(2,11)] + list('JQKA') suits = 'spades diamonds clubs hearts'.split() def __init__(self): self._cards = [Card(rank,suit) for suit in self.suits for rank in self.ranks] def __len__(self): return len(self._cards) def __getitem__(self,position): return self._cards[position] deck = FrenchDeck() from random import choice print(choice(deck))So when I run the print(choice(deck)) code above it prints a different card every time for example:Card(rank='3', suit='clubs') How would I get it to print out "3 of clubs" instead of the Card(rank='3', suit='clubs') ? RE: Question - jefsummers - Oct-02-2019 First, pls use Python tags to post code, makes is a lot easier to see what is going on. Change your print statement to chc = choice(deck) print (f"{chc.rank} of {chc.suit}") RE: Question - pythonprogrammer - Oct-02-2019 ok thanks for your help |