鱼C论坛

 找回密码
 立即注册
查看: 2303|回复: 1

关于分发扑克牌游戏的部分代码不是很理解

[复制链接]
发表于 2017-3-24 19:34:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在其他博主贴上看到的一段代码,试着分析,发现有些地方不懂,菜鸟求助。。。。。

不是很懂这段代码中的(方块.append(i[2:])和 key=lambda x:num.index(x))
比如:方块.append(i[2:])  中 i 指代的是什么?
           key=lambda x:num.index(x)  中传入x的参数又是什么?

谢谢!
import random
huase = ['黑桃','红心','方块','草花']

num = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
# r = random.choice(huase)
# total2 = list(map(lambda x: r + x, num))
total = []
for i in huase:
        total3 = list(map(lambda x: i + x, num))
        total.extend(total3)
# 玩家 = [[],[],[],[]]
random.shuffle(total)

玩家1 = total[0:13]
玩家2 = total[13:26]
玩家3 = total[26:39]
玩家4 = total[39:]
# print(玩家1,len(玩家1))
# print(玩家2,len(玩家2))
# print(玩家3,len(玩家3))
# print(玩家4,len(玩家4))

def printinfo(listinfo,count):
    方块 = []
    黑桃 = []
    红心 = []
    草花 = []
    for i in listinfo:
        if '方块' in i:
            方块.append(i[2:])
        elif '黑桃' in i:
            黑桃.append(i[2:])
        elif '草花' in i:
            草花.append(i[2:])
        else:
            红心.append(i[2:])
    黑桃 = sorted(黑桃, key=lambda x:num.index(x), reverse=True)
    草花 = sorted(草花, key=lambda x:num.index(x), reverse=True)
    方块 = sorted(方块, key=lambda x:num.index(x), reverse=True)
    红心 = sorted(红心, key=lambda x:num.index(x), reverse=True)

    msg = '''
        玩家%s的牌
        黑桃:%s
        红心:%s
        方块:%s
        草花:%s
    ''' %(count,黑桃,红心,方块,草花)
    print(msg,end='------------')

count = 1
for i in [玩家1,玩家2,玩家3,玩家4]:
    printinfo(i, count)
    count += 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-3 16:52:40 | 显示全部楼层
1、方块.append(i[2:])中的i是在第9行中生成的“花色+数字”字符串(如方块1,红桃10),这里i[2:]表示只取数字部分;

2、key=lambda x:num.index(x)中的x是第24-27行定义的四个列表,在28-36行操作后,里面的每一个元素按照第4行num列表中对应的索引排列
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 06:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表