Python扑克牌发牌


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)

相关内容

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值