Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于prinitng python牌组的问题?_Python - Fatal编程技术网

关于prinitng python牌组的问题?

关于prinitng python牌组的问题?,python,Python,所以,我有一副基本的卡片,但是我在打印过程中遇到了麻烦。我的教授让我们使用eq和str方法,因此我在代码中使用了这一方法。对我的错误有什么建议吗?如何更改主部分,将返回的手牌中的每张卡转换为字符串,然后只打印它 import random class Deck(object): """Represent a deck of 52 playing cards.""" def __init__(self, start_shuffled): "

所以,我有一副基本的卡片,但是我在打印过程中遇到了麻烦。我的教授让我们使用eqstr方法,因此我在代码中使用了这一方法。对我的错误有什么建议吗?如何更改主部分,将返回的手牌中的每张卡转换为字符串,然后只打印它

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
    ,但是降价系统误解了你的下划线?如果是后者,你仍然是