利用Python实现刘谦春晚魔术

 更新时间:2024年02月11日 11:58:34   作者:微小冷  
刘谦在2024年春晚上的撕牌魔术的数学原理非常简单,可以用Python完美复现,文中通过代码示例给大家介绍的非常详细,感兴趣的同学可以自己动手尝试一下

魔术流程

刘谦在2024年春晚上的撕牌魔术的数学原理非常简单,可以用Python完美复现。其基本流程如下

  1. 准备4张牌1234,撕成两半,并叠放在一起,从而8张牌的顺序为12341234,相同的数字,表示是同一张牌。
  2. 将上面的三张插入后面的牌里,将第四章牌压在屁股下。也就是说,屁股下的牌是4,手里的牌尽管是乱的,但最下面的牌一定也是4 。接下来可以任意洗牌,只要保证4一直在最下面。现场刘谦让南方人拿一张牌插入中间,北方人拿两张牌插入中间,如果不确定自己是南是北,就拿3张牌插中间。
  3. 男生扔一张,女生扔两张,尽管二者分别剩下6/7张牌,但仍不改变最下面是4 ,但接下来,连续把7张牌放在最底下,这步让男生的4变成倒数第二张、女生的4变成倒数第三张。
  4. 把最上面的牌放在最下面,然后扔掉第二张,重复操作,直到只剩下一张牌为止。

最后的结果是,剩下的是4。

python实现

下面用python实现这个魔术流程,首先实现一个比较常用的操作,即洗牌。将最上面的i ii张牌插入到剩下的牌中,实现代码如下,其中N为插入牌的位置。

from random import randint
def shuffle(lst, i):
    N = randint(i+1,len(lst)-1)
    return lst[i:N] + lst[:i] + lst[N:]

然后实现第4步操作,即留一张牌,然后扔一张牌,反复操作,直到只剩下一张。

def cleaner(lst):
    if len(lst) == 1:
        return lst[0]
    lst = lst[1:]+lst[:1]
    del lst[0]
    return cleaner(lst)

最后,实现主程序,代码如下。其输入l s t 为长度为4的序列,isMale为是男是女,fromN为正整数,1 , 2 , 3分别表示南方、北方以及不知道南北方。

def LQ(lst, isMale, fromN=1):
    lst = lst + lst
    lst = shuffle(lst,3)
    ass = lst[0]
    lst = lst[1:]
    lst = shuffle(lst, fromN)
    if isMale:
        del lst[0]
    else:
        del lst[:2]
    for i in range(7):
        lst = lst[1:] + lst[:1]
    hand = cleaner(lst)
    print(ass, hand)

见证奇迹

接下来,就是见证奇迹的时刻

LQ(["J", "Q", "K", "A"], 1, 2)  # A A
LQ(["J", "Q", "K", "A"], 0, 2)  # A A
LQ(["J", "Q", "K", "A"], 1, 1)  # A A

可见,无论是男是女,最终输出的都是相同的结果。

到此这篇关于利用Python实现刘谦春晚魔术的文章就介绍到这了,更多相关Python刘谦春晚魔术内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • import sklearn报错正确安装sklearn的解决方法

    import sklearn报错正确安装sklearn的解决方法

    这篇文章主要介绍了import sklearn报错正确安装sklearn的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 简介Python设计模式中的代理模式与模板方法模式编程

    简介Python设计模式中的代理模式与模板方法模式编程

    这篇文章主要介绍了Python设计模式中的代理模式与模板方法模式编程,文中举了两个简单的代码片段来说明,需要的朋友可以参考下
    2016-02-02
  • Python安装pygit2失败问题及解决

    Python安装pygit2失败问题及解决

    这篇文章主要介绍了Python安装pygit2失败问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 详解pygame中Rect对象

    详解pygame中Rect对象

    Rect是pygame中的一个创建矩形的对象,它包含一些属性主要是两块:坐标和长宽,Pygame 通过 Rect 对象存储和操作矩形区域,这篇文章主要介绍了pygame中Rect对象,需要的朋友可以参考下
    2022-07-07
  • 详解python flask是如何预防CSRF攻击

    详解python flask是如何预防CSRF攻击

    CSRF(Cross-site request forgery)攻击是一种常见的网络安全漏洞,它可以通过欺骗用户执行恶意请求来攻击 Web 应用程序,本篇文章将介绍python flask是如何预防CSRF攻击,需要的朋友可以参考下
    2024-04-04
  • 使用python脚本自动创建pip.ini配置文件代码实例

    使用python脚本自动创建pip.ini配置文件代码实例

    这篇文章主要介绍了使用python脚本自动创建pip.ini配置文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python字符串的基本操作方法(非常详细)

    Python字符串的基本操作方法(非常详细)

    字符串是python中最常见的数据类型,创建字符串只需用引号括起来分配给一个变量即可,这篇文章主要给大家介绍了关于Python字符串的基本操作方法的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Python模块的加载讲解

    Python模块的加载讲解

    今天小编就为大家分享一篇关于Python模块的加载讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • python在地图上画比例的实例详解

    python在地图上画比例的实例详解

    在本篇文章里小编给大家整理的是一篇关于如何用python在地图上画比例的相关实例内容,有兴趣的朋友们可以学习下。
    2020-11-11
  • windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码

    windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码

    这篇文章主要介绍了windows10 pycharm下安装pyltp库和加载模型实现语义角色标注,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05

最新评论