对象不能直接传值给列表,需要将类型转换为str再传值

错误示范:

      

打印了对象的type后  才想起强制转换  将对象强转为str后即可成功 

 题目要求:请定义一个名为Card的扑克牌类,该类有两个字符串变量face和suit。分别描述一张牌的牌面值(如:A,K,Q,J,10,9...3,2)和花色(如:黑桃,红桃,梅花,方块)。定义Card类中的构造方法,为类中的成员变量进行初始化;getFace(),得到扑克牌的牌面值;定义方法getSuit(),得到扑克牌的花色;定义__str__(),返回表示扑克牌的花色和牌面值字符串(如:红桃A,梅花10);在测试模块中定义字符串数组f和s:分别表示扑克牌的牌面值和花色;定义52个元素的deck列表,用来存放52张牌。

源码如下:

class Card:
    def __init__(self,face,suit):
        self.face = face
        self.suit = suit
    def getFace(self):
        return self.face
    def getSuit(self):
        return self.suit
    def __str__(self):
        return '%s%s'%(self.suit,self.face)
f = ['A',2,3,4,5,6,7,8,9,10,'J','Q','K']
s = ['黑桃','红桃','梅花','方块']
deck = []
for i in s:
    for j in f:
        deck.append(str(Card(f[f.index(j)],s[s.index(i)])))
        """
          f.index(j):获取数组f中的各个下标 s.index(i) :获取数组s中的各个下标
          f[f.index(j)]:获取各个下标的值作为face  s[s.index(i)]):获取各个下标的值作为suit
          str 是为了将对象转换为字符串类型  若不用str 输出的值将为对象名
        """
print(deck)
print(len(deck))

Logo

鸿蒙生态一站式服务平台。

更多推荐