1 ''' 2 题目: 一副扑克牌,13*4+2张,要求洗牌,也就是把牌尽量打乱 3 ''' 4 5 ''' 6 1.先生成1-5的随机数,对应四种花色和大小王,找到对应花色后, 7 再生成随机数取出对应的牌,然后删除对应的号码(以下程序使用此思路) 8 2.可以将54张牌编号,然后再随机生成54个随机数,递减 9 ''' 10 11 import random 12 # 四种颜色的扑克 13 flow = ['黑桃', '红桃', '方块', '梅花','王'] 14 15 # 号码,四种花色 16 numFlowBlack = [ '2', '3', '4', '5', '6', '7', '8', '9', '10', 'j', 'q', 'k','a'] 17 numFlowRed =numFlowBlack.copy() 18 numFlowBlock = numFlowBlack.copy() 19 numFlow = numFlowBlack.copy() 20 # 大小王 21 king = ['big', 'small'] 22 23 num = [numFlowBlack, numFlowRed, numFlowBlock, numFlow, king] 24 # 已经取出的扑克牌 25 pokeGet = [] 26 27 # 随机取值 28 def pokeGetRandom(): 29 while True: 30 # 随机生成四种花色和大小王的数字, 31 i = random.randint(1,len(num)) 32 33 # 从取出的花色中随机取值,然后删掉 34 if len(num[i-1]) > 0: 35 j = random.randint(0, len(num[i-1])-1) 36 pokeGet.append(flow[i - 1]+num[i-1][j]) 37 num[i-1].pop(j) 38 39 if len(num[0]) == 0 and len(num[1]) == 0 and len(num[2]) == 0 and len(num[3]) == 0 and len(num[4]) == 0 : 40 break 41 42 return pokeGet 43 44 print(pokeGetRandom())
问题:使用while 循环,在最后可能会出现多余的循环