# -*- coding: utf-8 -*-
'''
Created on 2020年1月29日
@author: insisted_search
1. 自定义 一个序列,该序列按顺序包含 52 张扑克牌,分别是黑桃、红心、草花、方块的 2~A 。
要求:提供序列的各种操作方法 。
'''
def check_key(key):
if not isinstance(key, int):raise TypeError("索引值必须是整数")
if key < 0:raise IndexError('索引值必须是非负数')
if key >= 52:raise IndexError('索引值不能超过%d'%52)
class PokerSeq:
def __init__(self):
self.__changed = {}
self.__deleted = []
def __len__(self):
return 52
def __getitem__(self,key):
check_key(key)
if key in self.__changed:
return self.__changed[key]
if key in self.__deleted:
return None
ret = ''
t_i = key//13
if t_i == 0:
ret = '黑桃';
elif t_i == 1:
ret = '红心'
elif t_i == 2:
ret = '草花'
else:
ret = '方块'
t_i = key%13
if t_i<9:
ret = ret+str(t_i+2)
elif t_i == 9:
ret = ret+'J'
elif t_i == 10:
ret = ret+'Q'
elif t_i == 11:
ret = ret+'K'
else:
ret = ret+'A'
return ret
def __setitem__(self,key,value):
check_key(key)
self.__changed[key] = value
def __delitem__(self,key):
check_key(key)
if key not in self.__deleted : self.__deleted.append(key)
if key in self.__changed : del self.__changed[key]
if __name__ == '__main__':
sq = PokerSeq()
print(len(sq))
for i in sq:
print(i,end=' ')
sq[1]='大王'
print(sq[1])
del sq[1]
print(sq[1])
sq[1]='小王'
print(sq[1])
pass