Python扑克牌发牌

文章目录

    • 1. 题目
      • 1.1 输出样例
    • 2. 题解✨
      • 2.1 知识储备
      • 2.2 代码


1. 题目

从键盘输入一个整数作为随机种子,随机生成一副扑克牌(去掉大小王),循环分给4位牌手,每人5张牌(第1、5、9、13、17张牌给第一个玩家,第2、6、10、14、18给第二个玩家…以此类推)并输出。

1.1 输出样例

4
♦Q   ♠10  ♣A   ♠94   ♣K   ♦3   ♣Q   ♣458   ♠A   ♦J   
♦K   ♣2   ♥K   ♥J   ♥372764   ♠Q   ♣1038   ♦A   ♥A   ♦69   ♣J   ♥Q   ♠5   ♠J   ♦98246109256105   ♠K   ♣87731个玩家的牌是:♦Q,4,4, ♦J, ♥J
第2个玩家的牌是:♠10, ♣K,5, ♦K,33个玩家的牌是:♣A,3,8,2,74个玩家的牌是:♠9, ♣Q, ♠A, ♥K,2

2. 题解✨

2.1 知识储备

  1. random.seed():获取某种特定生成的随机数
    seed()无参数时,每次生成的随机数不同,
    seed()有参数时,若参数相同,则每次生成的随机数相同;若参数不同,则生成的随机数也不同
import random

ls = [1, 2, 3, 4, 5, 6, 7, 8]

for i in range(8):
    random.seed(4)      # 试着改变seed()中的数或者注释掉这一行,看看输出的变化
    print(random.randint(1, 10))	# randint(a, b)随机生成[a, b]间的整数

# 注意⚠️:randint与range取值范围的区别。前者能取右侧的值,后者不能
  1. random.shuffle():将一个序列(列表、字符串或元组)的顺序打乱
# 示例
import random

mylist = ["apple", "banana", "cherry"]
random.shuffle(mylist)

print(mylist)

2.2 代码

import random


# 生成一副不含大小王的扑克牌序列
def create(suit, d):
    ls = []
    for i in range(4):
        for j in range(13):
            temp = suit[i] + d[j]
            ls.append(temp)
    return ls


# 随机洗牌
def shufflecard(pokers):
    random.shuffle(pokers)
    return pokers


# 发5张牌给一个玩家并将发给该玩家的牌输出
def deal(pokers, n):
    ls = []
    for i in range(n - 1, n + 16, 4):
        ls.append(pokers[i])
    print('第{}个玩家的牌是:{}'.format(n, ', '.join(ls)))


n = int(input())

suit = ['♥', '♠', '♦', '♣']
d = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
random.seed(n)
poker = create(suit, d)
poker = shufflecard(poker)

for i in range(52):
    print('{:4}'.format(poker[i]), end=' ')		# 格式化输出洗牌后的牌
    if i % 13 == 12:
        print()									# 换行
for i in range(1, 5):
    deal(poker, i)

相关内容

  • Python扑克牌发牌(用类实现)

  • Python期末考试总复习资料

你可能感兴趣的:(Python)