whycai
 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 循环,在最后可能会出现多余的循环

分类:

技术点:

相关文章:

  • 2021-07-22
  • 2022-01-08
  • 2021-11-17
  • 2022-12-23
  • 2021-07-05
  • 2021-11-17
  • 2021-11-17
  • 2021-11-17
猜你喜欢
  • 2021-11-17
  • 2021-11-17
  • 2021-11-17
  • 2022-12-23
  • 2021-11-17
  • 2021-11-17
  • 2021-11-17
相关资源
相似解决方案