Skip to content

Latest commit

 

History

History
251 lines (154 loc) · 5.46 KB

095-749448-列表_乱序_shuffle_扑克牌_升级_拖拉机.sy.md

File metadata and controls

251 lines (154 loc) · 5.46 KB
show version enable_checker
step
1.0
true

列表 - 排序 - order

回忆

  • 上次我们了解了排序
    • 排序是在原来的列表上做的
    • 可以按照不同的方式排序
      • 字符序号
      • 字符串长度
    • 可以递增也可以逆序
  • 排好序之后插入就更合理了
    • 定点插入insert
    • 定点删除pop

图片描述

  • 那么是否有排序的逆运算呢
    • 比如说乱序?🤔

乱序

图片描述

  • 好像来自我们熟悉的random包

图片描述

  • 顺序乱了有什么意义吗?

shuffle

  • 意义挺多
    • 打乱顺序
    • 随机安排角色
    • 随机分组

图片描述

  • shuffle 本身就是洗牌的意思

洗牌

  • 一副牌54张

图片描述

  • 每张牌一个编号

图片描述

  • 把牌洗开

洗牌

图片描述

  • 牌洗好了
    • 不过洗的是牌的序号

图片描述

  • 我可以洗真正的牌吗?
    • 要先把数字序号换成扑克牌的字符

扑克字符

图片描述

图片描述

  • 次序有点不同
    • 不是黑红梅方
  • 把这些都遍历一遍

遍历范围

图片描述

  • 输出结果

图片描述

  • 组一副牌应该够了
  • 让输出更清晰一点

输出

图片描述

  • 输出结果

图片描述

  • 根据这个来构建我们的列表

构造一副牌

图片描述

  • 多出两张不相关的牌

图片描述

  • 将他们remove掉

删除之后

图片描述

  • 结果为58张牌
  • 多出4张
  • 需要把骑士牌(C)删掉

图片描述

一副牌成型

图片描述

  • 54张

图片描述

洗牌

图片描述

  • 洗牌结果

图片描述

  • 什么玩法呢?

升级

  • 4个人
    • 每人抓12轮
    • 总共抓48张
    • 还剩6张
    • 扣为底牌

图片描述

  • 底牌归当前轮的庄家

抓牌

图片描述

  • 抓牌結果

图片描述

  • 抓了牌还是要理一理的

模拟抓牌

图片描述

  • 抓牌结果

图片描述

最終代碼

import random
cards = []
for n in range(0x1f0a0, 0x1f0e0):
    if n % 16 ==0 or n % 16 ==12:
        continue
    cards.append(chr(n))
cards.remove(chr(0x1f0af))
cards.remove(chr(0x1f0bf))
random.shuffle(cards)
print(cards)
dong = cards[0:48:4]
dong.sort()
nan = cards[1:48:4]
nan.sort()
xi = cards[2:48:4]
xi.sort()
bei = cards[3:48:4]
bei.sort()
di = cards[-6:]
print("東:",dong)
print("南:",nan)
print("西:",xi)
print("北:",bei)
print("底:",di)
  • 这样同样花色就被理顺了

图片描述

  • 可以玩双升吗?

双升

  • 雙升也叫拖拉機

图片描述

  • 發牌結果

图片描述

发牌结果

  • 可以玩斗地主吗?

图片描述

  • 斗地主如何理牌呢?

列表函數總結

  • 现在我们对于列表的函数基本都了解了

图片描述

  • 不能还在这个维度里面绕圈子了

总结

  • 这次我们了解了乱序
    • 排序可以让列表有顺序
    • 随机洗牌可以让列表没有顺序
    • 洗牌、码牌、抓牌、看牌
    • 理牌可以让自己手里的牌有适合出牌的次序
  • 无序有序都用
    • 无序带来混乱的快乐
    • 有序带来理性的方便

图片描述

  • 目前所有列表都是一维列表
  • 可以有更高维度的列表吗?🤔
  • 下次再说 👋