洗牌

为了写洗牌函数,可能需要回顾命令式编程的第二节第五节内容。

首先介绍一个小知识:我们说过Python3的编码支持很多种语言,其实它也支持很多种特殊符号,包括扑克牌花色的符号,它们的编码分别是:

>>> classes = ['\u2660', '\u2661', '\u2662', '\u2663']
>>> for c in classes:
	print(c)
	
♠
♡
♢
♣

关于编码更详细的内容以后会涉及,现在复制粘贴用就好,当然你可以坚持用汉字来代替花色…

去掉大小王的扑克牌共有52张,是由四中花色和13种牌面组合而成的。我先建立两个列表,用来储存所有的花色和牌面:

classes = ['\u2660', '\u2661', '\u2662', '\u2663']
ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']

接着,我打算建立一个空列表来存放52张牌:

deck = []

下面,我准备利用for循环嵌套,生成52张扑克牌,并全部放到deck里面:

for r in ranks:
    for c in classes:
        deck.append(c + r)

接着,我需要把deck这个列表中元素的顺序随机打乱:

import random
random.shuffle(deck)

好啦,最后,我把上述所有的东西整理在一个函数里面,函数取名叫:shuffled_deck吧:

def shuffled_deck():
    '生成包含随机顺序52张牌的列表' 
    deck = []
    classes = ['\u2660', '\u2661', '\u2662', '\u2663']
    ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']

    for c in classes:
        
        for r in ranks:
            deck.append(c + r)
    
    import random
    random.shuffle(deck)

    return deck #最后还加上这个函数返回的内容,即生成好的deck列表

保存,运行试试:

============= RESTART: C:\Users\MSI\Desktop\BlackJ\functions.py =============
>>> deck = shuffled_deck()
>>> deck
['♣3', '♡9', '♠2', '♡A', '♠K', '♠8', '♣7', '♡8', '♣Q', '♢3', '♣2', '♢6', '♠J', '♡4', '♠3', '♡2', '♠7', '♢5', '♡3', '♢7', '♡6', '♣A', '♣10', '♢A', '♣5', '♣J', '♢10', '♡K', '♣4', '♠9', '♣8', '♠4', '♠10', '♣9', '♢9', '♢2', '♢4', '♣6', '♠A', '♣K', '♢Q', '♢J', '♡J', '♠5', '♠Q', '♢8', '♡Q', '♡7', '♡10', '♡5', '♠6', '♢K']

 

如果还有什么问题或者发现了文章的错误,欢迎给我留言!邮箱可以随便乱写~

发表评论

邮箱地址不会被公开。 必填项已用*标注