美文网首页日更成长营自学编程Python
自学Python:随机自动发牌程序

自学Python:随机自动发牌程序

作者: 小强聊成长 | 来源:发表于2022-01-19 13:07 被阅读0次

一副扑克有52张牌,打桥牌时应将牌分给4个人。

问题来了,请设计一个程序完成自动发牌的工作。

要求:黑桃用S表示,红桃用H表示,方块用D表示,梅花用C表示。

下面直接上代码:

########################

import random

def p(b, n):

    print("\n♠", end='')  # 打印黑桃标记

    for i in range(13):  # 将数组中的值转换为相应的花色

        if b[i] // 13 == 0: # 找到该花色对应的牌

            print(n[b[i] % 13], end=' ')

    print("\n♥", end='')# 打印红桃标记

    for i in range(13):

        if b[i] // 13 == 1:

            print(n[b[i] % 13], end=' ')

    print("\n♦", end='')  # 打印方块标记

    for i in range(13):

        if b[i] // 13 == 2:

            print(n[b[i] % 13], end=' ')

    print("\n♣", end='') # 打印梅花标记

    for i in range(13):

        if b[i] // 13 == 3 or b[i] // 13 == 4:

            print(n[b[i] % 13], end=' ')

    print()

if __name__ == '__main__':

    n = ['2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A']

    a = [0] * 53

    b1 = [0] * 13

    b2 = [0] * 13

    b3 = [0] * 13

    b4 = [0] * 13

    b11, b22, b33, b44, t = 0, 0, 0, 0, 1

    while (t <= 52):  # 控制发52张牌

        m = random.randint(0, 52)  # 产生0~51之间的随机数

        flag, i = True, 1

        while i <= t and flag:  # 查找新产生的随机数是否已经存在

            if m == a[i]:

                flag = 0 # flag = 1表示产生的是新的随机数,flag = 0 表示新产生的随机数已经存在

            i += 1

        if flag:

            a[t] = m  # 如果产生了新的随机数,则存入数组

            t += 1

            # 根据t的模值,判断当前的牌应存入哪个数组中

            if t % 4 == 0:

                b1[b11] = a[t - 1]

                b11 += 1

            elif t % 4 == 1:

                b2[b22] = a[t - 1]

                b22 += 1

            elif t % 4 == 2:

                b3[b33] = a[t - 1]

                b33 += 1

            elif t % 4 == 3:

                b4[b44] = a[t - 1]

                b44 += 1

    b1 = sorted(b1, reverse=True)  # 将每个人的牌进行排序

    b2 = sorted(b2, reverse=True)

    b3 = sorted(b3, reverse=True)

    b4 = sorted(b4, reverse=True)

    p(b1, n)  # 分别打印每个人的牌

    p(b2, n)

    p(b3, n)

    p(b4, n)

########################

执行结果如下:

♠A K 7

♥A 6

♦J 5 4 3

♣2 K 9 2

♠J T 9 8 6 5

♥K 8 2

♣A T 8 6

♠3

♥Q 9 7 4 3

♦K 9 2

♣Q 7 5 3

♠Q 4

♥J T 5

♦A Q T 8 7 6

♣J 4

________________END______________

相关文章

网友评论

    本文标题:自学Python:随机自动发牌程序

    本文链接:https://www.haomeiwen.com/subject/pwfkcrtx.html