![]() |
|
|
| Subject:
PYTHON - Selecting the correct Card and Suit - NOT SELECTING THE SUIT
Category: Computers > Algorithms Asked by: macca1111-ga List Price: $15.00 |
Posted:
10 Oct 2006 06:29 PDT
Expires: 11 Oct 2006 19:43 PDT Question ID: 772237 |
Hi,
I have created a program that uses 2 random no.s to select a card.
The first random no selects 1-13 including Kings etc. The second
random number selects the suit ie 1-4.
Below is my Class and Script...
class Card:
"A Card object is a numeric representation of a card."
def __init__(self, rank, suit):
"Indicates rank from 1-13, as well as the card's suit."
self.rank = rank
self.suit = suit
self.ranks = [None, "ace", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "jack", "queen", "king"]
self.suits = {"s": "spades","d": "diamonds","c": "clubs","h": "hearts"}
def getRank(self):
"Returns the rank of the card."
return self.rank
def getSuit(self):
"Returns the suit of the card."
return self.suit
def BJValue(self):
"Returns the Blackjack value of the card."
return 0 ## temporary
def __str__(self):
#"Returns a string that names the card."
return "%s of %s" % (self.ranks[self.rank], self.suits.get(self.suit))
My script to print a card is...
from random import*
from Card import Card
from string import*
def main():
# Ask the user to select the number of cards
n = input("Enter the number of cards to draw >>")
for i in range(n):
a = randrange(1,13)
b = randrange(1,4)
c=Card(a,b)
print c
main()
It keeps printing out for example:
4 of none
9 of none
were it should say:
4 or Spades - for example
9 of Heart - or whatever.
If I type directly into Python
x=Card(1,"s")
print x
i get the correct answer
'1 of Spades'
It also needs to print the BJ value of each card selected. | |
| |
| |
| |
|
|
| There is no answer at this time. |
|
| Subject:
Re: PYTHON - Selecting the correct Card and Suit - NOT SELECTING THE SUIT
From: dmrmv-ga on 10 Oct 2006 09:56 PDT |
Note I'm not a GAR so fixing this is just for my amusement at
lunchtime. I'm also not a Python expert so take this with a grain of
salt:)
You define the suits in a dictionary; this works in the manual example
because you are calling the Card class correctly: Card(1,"s") with an
integer index into the rank array and a key index into the suit
dictionary. Your code snippet calls the Card class as though it is an
array: Card(a,b) where a and b are integers, so for example the call
might be Card(1,1) and the 1 isn't a valid key for the suit
dictionary.
The easiest fix is to just store the suits the same as the ranks:
["", "spades","diamonds","clubs", "hearts"] where the empty value is
just a placeholder so your code doesn't have to access the 0th value.
You could leave that out and just have the randrange function return
an index from 0 to 3 (and you could do the same for the rank list).
If you leave the suits stored as a dictionary you would have to add an
extra step in where the key value is retrieved based on the integer
supplied from the randrange step.
Here is functional code that also prints the BJ value:
from random import*
#from Card import Card
from string import*
class Card:
"A Card object is a numeric representation of a card."
def __init__(self, rank, suit):
"Indicates rank from 1-13, as well as the card's suit."
self.rank = rank
self.suit = suit
self.ranks = [None, "ace", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "jack", "queen", "king"]
self.suits = [None, "spades","diamonds","clubs","hearts"]
self.BJ = [None, 11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
def getRank(self):
"Returns the rank of the card."
return self.rank
def getSuit(self):
"Returns the suit of the card."
return self.suit
def BJValue(self):
"Returns the Blackjack value of the card."
return 0 ## temporary
def __str__(self):
#"Returns a string that names the card."
return "%s of %s (%s)" % (self.ranks[self.rank],
self.suits[self.suit], self.BJ[self.rank])
def main():
# Ask the user to select the number of cards
n = input("Enter the number of cards to draw >>")
for i in range(n):
a = randrange(1,13)
b = randrange(1,4)
c=Card(a,b)
print c
main() |
| Subject:
Re: PYTHON - Selecting the correct Card and Suit - NOT SELECTING THE SUIT
From: macca1111-ga on 10 Oct 2006 15:23 PDT |
Tks for the very quick response... |
| Subject:
Re: PYTHON - Selecting the correct Card and Suit - NOT SELECTING THE SUIT
From: macca1111-ga on 10 Oct 2006 15:25 PDT |
When I work out how to complete the answer. You can have the payment... |
| Subject:
Re: PYTHON - Selecting the correct Card and Suit - NOT SELECTING THE SUIT
From: macca1111-ga on 11 Oct 2006 04:05 PDT |
It works now. Just my fat fingers... Thank you |
| Subject:
Re: PYTHON - Selecting the correct Card and Suit - NOT SELECTING THE SUIT
From: dmrmv-ga on 11 Oct 2006 06:31 PDT |
Glad it helped. Since I'm not a researcher my comment won't cost you anything but I feel somewhat badly that maniac who is a GAR showed interest after I put my comment up. Perhaps you could ask a supplementary question that maniac could respond to and earn your fee. Apologies to maniac as the fee posted was significant. |
If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you. |
| Search Google Answers for |
| Google Home - Answers FAQ - Terms of Service - Privacy Policy |