回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我对Python比较了解,但我决定使用类创建一个高低卡游戏。我已经把所有的课程都设置好了,但是我唯一的问题是,当我试着看<code>playerHand</code>的卡片是比<code>nextCard</code>的卡片大还是小的时候<code>playerHand</code>和<code>nextCard</code>都绑定到类,我得到的错误是:<code>TypeError: '>' not supported between instances of 'Person' and 'NextCard'</code></p>
<p>有100%更好的方法可以做到这一点,但这是我迄今为止得到的:</p>
<pre><code>import random
class Card(object):
def __init__(self, suit, value):
self.suit = suit
self.value = value
def show(self):
print ("{} of {}".format(self.value, self.suit))
class Deck(object):
def __init__(self):
self.cards = []
self.build()
def build(self):
for suit in ["Spades", "Clubs", "Diamonds", "Hearts"]:
for value in ["Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"]:
self.cards.append(Card(suit, value))
def show(self):
for card in self.cards:
card.show()
def shuffle(self):
for n in range(len(self.cards)-1,0,-1):
r = random.randint(0, n)
self.cards[n], self.cards[r] = self.cards[r], self.cards[n]
def drawCard(self):
return self.cards.pop()
class Person(object):
def __init__(self):
self.hand = []
def draw(self, deck):
self.hand.append(deck.drawCard())
return self
def show(self):
for card in self.hand:
card.show()
class NextCard(object):
def __init__(self):
self.nextcard = []
def draw(self, deck):
self.nextcard.append(deck.drawCard())
return self
def show(self):
for card1 in self.nextcard:
card1.show()
deck = Deck()
deck.shuffle()
human = Person()
playerHand = human.draw(deck)
newcard = NextCard()
nextCard = newcard.draw(deck)
play = input("Do you want to play High/Low? Y or N? ")
while play.lower()== "y":
card = playerHand
print("The current card is: ", str(card.show()))
guess = input("Guess H for high or L for low." )
if guess.lower()=="h":
if card > nextCard:
print("Congratulations! You guessed correctly! The next card was ", card)
play = input("Play again? Y or N? ")
if card < nextCard:
print("You lost! The next card was ", nextCard)
play = input("Play again? Y or N? ")
if guess.lower()=="l":
if card > nextCard:
print("You lost! The next card was ", nextCard)
play = input("Play again? Y or N? ")
if card < nextCard:
print("Congratulations! You guessed correctly! The next card was ", nextCard)
else:
print("The game is over.")
</code></pre>
<p>对于类间比较问题的任何解决方案或解决方法,我们将不胜感激。这是用python 3编写的</p>