问题描述
import random
row = ['\u2665','\u2663','\u2666','\u2660'] # ["Hearts","Clubs","Diamonds","Spades"]
symbol = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
level = input('Choose Difficulty level: Easy (1),Medium (2),Hard (3): ')
while level!="1" and level!="2" and level!="3":
level = (input('Choose Difficulty level: Easy (1),Hard (3): '))
if level == "1":
col=4
elif level== "2":
col=10
else:
col=1
def value(symbol):
if symbol=="A":
return 1
elif symbol=="Q" or symbol=="J" or symbol=="K":
return 10
else:
return int(symbol)
deck =[]
for i in range(len(row)):
deck.append([])
for j in range(col):
card = [symbol[j],row[i],value(symbol[j]),str(symbol[j])+str(row[i]),False]
deck.append(card)
但是函数 shuffle.random(deck)
只洗牌了 4 行...
我想创建一个只有卡片的新列表并对其进行洗牌,但后来我不知道如何将其设为 4 行 4 或 10 或 13 列的列表。
任何想法和建议都是有价值的!
解决方法
使用random.shuffle(inp)
创建一个递归函数:如果 input
是 list
洗牌它,否则,离开它
由于列表是可变的,所以一切都在原地
无论您的列表如何嵌套,一切都会被打乱
import random
inp_list = [1,[2,3,4,[5,6,7],8,9],[10,11]]
def shuffle_list(inp):
if type(inp) is list:
random.shuffle(inp)
for i in inp:
shuffle_list(i)
shuffle_list(inp_list)
print(inp_list)
[1,[11,10],[8,[7,5,6],9,2,4]]