IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 趣味Python题目10月8日 -> 正文阅读

[Python知识库]趣味Python题目10月8日

最近在自学Python,无意看到群友一道比较有趣的问题,故尝试给出答案。目前给出的版本是最简单的情况,没有考虑比较牌大小中出现数字或者字母重复的情况,以后有时间或许会给出更精细的版本。

编写程序,进行扑克牌大小比较。利用函数方法,生成52张四色(梅花,方块,黑桃,红桃)扑克牌,玩家的人数由用户输入,根据玩家的人数进行发牌,然后比较大小。

1. 牌的生成、发牌、大小比较,必须为函数

2. 程序要有终止条件

3. 用户不选择程序终止,那么继续发牌、出牌,进行大小比较

提示:可以使用以下列表表示信息
```python
num = ['3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A', '2']
color = ['红桃', '梅花', '方块', '黑桃']
playerName = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸', '子', '丑', '寅', '卯', '巳', '午', '未', '申', '酉', '戌', '亥']
```
# 需要用到的信息列表
num = ['3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A', '2']
color = ['红桃', '梅花', '方块', '黑桃']
playername = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸',
              '子', '丑', '寅', '卯', '巳', '午', '未', '申', '酉', '戌', '亥']
# 需要定义的函数
def generate_porker():
    '''
    产生随机的52张牌,允许重复
    '''
    gp = []
    import random
    color_gp = random.choices(color, k = 52)
    num_gp = random.choices(num, k =52)
    for i in range(52):
        gp.append(color_gp[i] + num_gp[i])
    return gp
def deal_porker(n, gp):
    '''
    从52张牌中给每个玩家按照顺序发牌
    '''
    players = playername[0: n]
    n_porker = int(52 / n)
    deal = []
    import random
    for i in range(n):
        temp = []
        temp.append(playername[i])
        temp.append(gp[i * (n_porker) : (i + 1) * n_porker])
        deal.append(temp)
    return deal
def discard_porker(n, deal):
    '''
    随机让每个玩家抽一张牌出来
    '''
    discard = []
    import random
    for i in range(n):
        temp = []
        temp.append(deal[i][0])
        temp.append(random.choice(deal[i][1]))
        discard.append(temp)
    return discard
def compare(n, discard):
    '''
    比较出来赢家(不考虑数字和花色重复的情况)
    '''
    temp = 0
    for i in range(n):
        if len(discard[temp][1]) == 4:
            a = discard[temp][1][-2:]
        else:
            a = discard[temp][1][-1:]
        if len(discard[i][1]) == 4:
            b = discard[i][1][-2:]
        else:
            b = discard[i][1][-1:]
        if num.index(a) < num.index(b):
            temp = i
    return discard[temp][0]
flag = 1
while flag:
    n = eval(input('请输入玩家的人数(可以被52整数的正整数,不大于22):'))
    if n < 0 or n > 22 or 52 % n > 0:
        print('请重新输入玩家的人数!')
        continue
    else:
        gp = generate_porker()
        deal = deal_porker(n, gp)
        for i in range(n):
            print('{}的牌为:{}'.format(deal[i][0],deal[i][1]))
        discard = discard_porker(n, deal)
        for i in range(n):
            print('{}出的牌为:{}'.format(discard[i][0], discard[i][1]))
        winner = compare(n, discard)
        print('{}赢'.format(winner))
    temp = eval(input('请选择你要执行的操作(1.继续 2.退出):'))
    if temp == 2:
        flag = 0
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:14:15  更:2021-10-09 16:14:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:22:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码