关于prinitng python牌组的问题?
所以,我有一副基本的卡片,但是我在打印过程中遇到了麻烦。我的教授让我们使用eq和str方法,因此我在代码中使用了这一方法。对我的错误有什么建议吗?如何更改主部分,将返回的手牌中的每张卡转换为字符串,然后只打印它关于prinitng python牌组的问题?,python,Python,所以,我有一副基本的卡片,但是我在打印过程中遇到了麻烦。我的教授让我们使用eq和str方法,因此我在代码中使用了这一方法。对我的错误有什么建议吗?如何更改主部分,将返回的手牌中的每张卡转换为字符串,然后只打印它 import random class Deck(object): """Represent a deck of 52 playing cards.""" def __init__(self, start_shuffled): "
import random
class Deck(object):
"""Represent a deck of 52 playing cards."""
def __init__(self, start_shuffled):
"""Initializes a deck with 52 cards."""
suits=["H","S","D","C"]
ranks= list ( range(2, 11)) + ["J", "Q", "K", "A"]
self.cards=[]
for suit in suits:
for rank in ranks:
self.cards.append(Card(suit, rank))
if start_shuffled:
random.shuffle(self.cards)
def __str__(self):
res = []
for card in self.cards:
res.append(str(card))
return '\n'.join(res)
def has_card(self, card):
return card in self.cards
def draw_random_card(self):
card=random.choice(self.cards)
self.cards.remove(card)
return card
def draw_hand(self, num_cards):
cards=[ ]
for _ in range(num_cards):
cards.append(self.draw_random_card())
return cards
class Card(object) :
def __init__(self, s , r):
self.suit=s
self.rank=r
def __str__(self):
rep = self.rank + self.suit
return rep
def __eq__(self, other_card):
t1 = self.suit, self.rank
t2 = other_card.suit, other_card.rank
return eq(t1, t2)
def main():
deck1=Deck(True)
print("All the cards in the deck:")
print(deck1.cards)
print("Does the deck have the Queen of Hearts? True or False")
print(deck1.has_card(Card("H", "Q")))
card=deck1.draw_random_card()
print("A random card from the deck:")
print(card)
if deck1.has_card(card):
print("Something bad happened...")
print(card, "Shouldn't be in the deck anymore.")
print("A hand of six random cards:")
print (deck1.draw_hand(6))
if __name__=="__main__":
main()
两件事:
\uuu str\uuu
更改为\uu repr\uuu
。我这样做了,它开始为我正常打印。关于\uuu str\uuu
和\uu repr\uuu
之间的区别,有一个很好的讨论\uuuuueq\uuuuuuu
,但是Kevin已经解决了这些问题\uuu str\uuu
更改为\uu repr\uuu
。我这样做了,它开始为我正常打印。关于\uuu str\uuu
和\uu repr\uuu
之间的区别,有一个很好的讨论\uuuuueq\uuuuuuu
,但是Kevin已经解决了这些问题\uuu str\uuu
更改为\uu repr\uuu
。我这样做了,它开始为我正常打印。关于\uuu str\uuu
和\uu repr\uuu
之间的区别,有一个很好的讨论\uuuuueq\uuuuuuu
,但是Kevin已经解决了这些问题\uuu str\uuu
更改为\uu repr\uuu
。我这样做了,它开始为我正常打印。关于\uuu str\uuu
和\uu repr\uuu
之间的区别,有一个很好的讨论\uuuuueq\uuuuuuu
,但是Kevin已经解决了这些问题您在这一行得到一个
namererror
:
return eq(t1, t2)
rep = self.rank + self.suit
因为没有这样的函数,eq
。只需使用相等运算符
return t1 == t2
然后,您在这一行得到一个TypeError:
return eq(t1, t2)
rep = self.rank + self.suit
因为有时候rank
是一个整数,不能将整数和字符串相加。在连接之前,将rank
转换为字符串
rep = str(self.rank) + self.suit
然后,当您打印整个数据组时,它会显示类似于
,因为在集合中打印对象时,对象不会使用\uuu str\uuu
。为您的卡实施\uuuuuu repr\uuuu
方法
def __repr__(self):
return self.__str__()
现在你应该得到更好的输出
All the cards in the deck:
[10H, QS, 9D, 10C, 5S, AS, 5C, 10D, AC, 9C, 3H, 3D,
6H, JH, AD, 7D, KC, 7H, JD, 9H, 8H, 3C, 3S, 4H, 8C,
QD, 6C, 9S, QC, 6D, JS, 7S, 5H, 10S, KH, 2C, 7C, JC,
6S, 4D, 4S, 5D, 4C, AH, 2S, 8S, 8D, KS, 2D, KD, 2H, QH]
Does the deck have the Queen of Hearts? True or False
True
A random card from the deck:
3H
A hand of six random cards:
[3D]
您在这一行得到一个
namererror
:
return eq(t1, t2)
rep = self.rank + self.suit
因为没有这样的函数,eq
。只需使用相等运算符
return t1 == t2
然后,您在这一行得到一个TypeError:
return eq(t1, t2)
rep = self.rank + self.suit
因为有时候rank
是一个整数,不能将整数和字符串相加。在连接之前,将rank
转换为字符串
rep = str(self.rank) + self.suit
然后,当您打印整个数据组时,它会显示类似于
,因为在集合中打印对象时,对象不会使用\uuu str\uuu
。为您的卡实施\uuuuuu repr\uuuu
方法
def __repr__(self):
return self.__str__()
现在你应该得到更好的输出
All the cards in the deck:
[10H, QS, 9D, 10C, 5S, AS, 5C, 10D, AC, 9C, 3H, 3D,
6H, JH, AD, 7D, KC, 7H, JD, 9H, 8H, 3C, 3S, 4H, 8C,
QD, 6C, 9S, QC, 6D, JS, 7S, 5H, 10S, KH, 2C, 7C, JC,
6S, 4D, 4S, 5D, 4C, AH, 2S, 8S, 8D, KS, 2D, KD, 2H, QH]
Does the deck have the Queen of Hearts? True or False
True
A random card from the deck:
3H
A hand of six random cards:
[3D]
您在这一行得到一个
namererror
:
return eq(t1, t2)
rep = self.rank + self.suit
因为没有这样的函数,eq
。只需使用相等运算符
return t1 == t2
然后,您在这一行得到一个TypeError:
return eq(t1, t2)
rep = self.rank + self.suit
因为有时候rank
是一个整数,不能将整数和字符串相加。在连接之前,将rank
转换为字符串
rep = str(self.rank) + self.suit
然后,当您打印整个数据组时,它会显示类似于
,因为在集合中打印对象时,对象不会使用\uuu str\uuu
。为您的卡实施\uuuuuu repr\uuuu
方法
def __repr__(self):
return self.__str__()
现在你应该得到更好的输出
All the cards in the deck:
[10H, QS, 9D, 10C, 5S, AS, 5C, 10D, AC, 9C, 3H, 3D,
6H, JH, AD, 7D, KC, 7H, JD, 9H, 8H, 3C, 3S, 4H, 8C,
QD, 6C, 9S, QC, 6D, JS, 7S, 5H, 10S, KH, 2C, 7C, JC,
6S, 4D, 4S, 5D, 4C, AH, 2S, 8S, 8D, KS, 2D, KD, 2H, QH]
Does the deck have the Queen of Hearts? True or False
True
A random card from the deck:
3H
A hand of six random cards:
[3D]
您在这一行得到一个
namererror
:
return eq(t1, t2)
rep = self.rank + self.suit
因为没有这样的函数,eq
。只需使用相等运算符
return t1 == t2
然后,您在这一行得到一个TypeError:
return eq(t1, t2)
rep = self.rank + self.suit
因为有时候rank
是一个整数,不能将整数和字符串相加。在连接之前,将rank
转换为字符串
rep = str(self.rank) + self.suit
然后,当您打印整个数据组时,它会显示类似于
,因为在集合中打印对象时,对象不会使用\uuu str\uuu
。为您的卡实施\uuuuuu repr\uuuu
方法
def __repr__(self):
return self.__str__()
现在你应该得到更好的输出
All the cards in the deck:
[10H, QS, 9D, 10C, 5S, AS, 5C, 10D, AC, 9C, 3H, 3D,
6H, JH, AD, 7D, KC, 7H, JD, 9H, 8H, 3C, 3S, 4H, 8C,
QD, 6C, 9S, QC, 6D, JS, 7S, 5H, 10S, KH, 2C, 7C, JC,
6S, 4D, 4S, 5D, 4C, AH, 2S, 8S, 8D, KS, 2D, KD, 2H, QH]
Does the deck have the Queen of Hearts? True or False
True
A random card from the deck:
3H
A hand of six random cards:
[3D]
您当前的输出是什么样子的?@K.Niemczyk它当前打印卡组/整个主部分中的所有卡。它目前很混乱。您的输出当前是什么样子?@K.Niemczyk它当前打印牌组/整个主部分中的所有卡。它目前很混乱。您的输出当前是什么样子?@K.Niemczyk它当前打印牌组/整个主部分中的所有卡。它目前很混乱。您的输出当前是什么样子?@K.Niemczyk它当前打印牌组/整个主部分中的所有卡。现在一团糟。首先是+1。我自己也没听清楚:-)第一件事是+1。我自己也没听清楚:-)第一件事是+1。我自己也没听清楚:-)第一件事是+1。我自己也没听清楚:-)当你说“eq”时,你是指“eq”吗?你用粗体来强调吗?或者你的意思是
\uuuuuuuueq\uuuuuuuu
,但是降价系统误解了你的下划线?如果是后者,你仍然是