对象不能直接传值给列表,需要将类型转换为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))
|