"""
运用类完成一个扑克牌类(无大小王)的小游戏:
用户需要输入用户名,以下为用户可选选项:
1. 洗牌
2. 随机抽取一张
3. 指定抽取一张
4. 从小到大排序
5. 退出
1。洗牌:每次执行的结果顺序随机
2. 随机抽取一张:显示结果为:XXX您随机抽取的牌为:黑桃A
3. 指定抽取一张:
用户输入序号(1~52)
比如输入5,显示结果为:XXX您抽取的第5张牌为:黑桃A
4. 将此牌从小到大显示出来。 A -> 2 -> 3 .......->k
"""
import random
class User:
#初始化用户
def __init__(self, name):
self.name = name
#抽取后的牌组
self.p = []
#导入牌组对象
def e_poker(self, poker):
self.poker = poker
#随机抽取牌
def random_sampling(self):
p = random.choice(self.poker.pokers)
print(f'{self.name}您随机抽取的牌为:{p}')
self.poker.pokers.remove(p)
self.p.append(p)
#对指定数抽取牌
def specified_extraction(self, num):
if num >= 1 and num <= len(self.poker.pokers):
p = self.poker.pokers[num-1]
print(f'{self.name}您抽取{num}张的牌为:{p}')
self.poker.pokers.remove(p)
self.p.append(p)
else:
print('输入越界')
#对抽取后的牌的大小排序
def sort_zhipai(self):
list1 = []
list2 = []
list3 = []
for i in self.p:
list1.append(i[2:])
list1.sort()
for j in list1:
if j == '10':
list3.append(j)
elif j >= '2' and j <= '9':
list2.append(j)
else:
list3.append(j)
list2.sort()
list3.sort()
list4 = list2 + list3
for k in list4:
print(k, end='-->')
class Poker:
#生成牌组
def __init__(self):
self.num = [str(i) for i in range(2, 11)] + ['A', 'J', 'Q', 'K']
self.color = ['黑桃', '红杏', '黑梅', '红方']
self.pokers = []
for i in self.color:
for j in self.num:
self.pokers.append(f'{i}{j}')
#生成牌组后洗牌
random.shuffle(self.pokers)
#洗牌
def shuffle(self):
self.__init__()
print('洗牌成功')
def run():
user = input('请输入用户名:')
if user == "":
raise Exception('用户名输入为空!')
else:
u = User(user)
p = Poker()
u.e_poker(p)
while 1:
print('1.洗牌')
print('2. 随机抽取一张')
print('3. 指定抽取一张')
print('4. 从小到大排序')
print('5. 退出')
main_in = input('请输入选项:')
main_in = int(main_in)
if main_in == 1:
u.poker.shuffle()
elif main_in == 2:
u.random_sampling()
elif main_in == 3:
#对于牌组剩余的牌组抽取
num = input(f'请输入1~{len(u.poker.pokers)}的数据:')
num = int(num)
u.specified_extraction(num)
elif main_in == 4:
u.sort_zhipai()
elif main_in == 5:
break
else:
print('输入错误请重新输入!')
run()