利用Python實(shí)現(xiàn)劉謙春晚魔術(shù)
魔術(shù)流程
劉謙在2024年春晚上的撕牌魔術(shù)的數(shù)學(xué)原理非常簡單,可以用Python完美復(fù)現(xiàn)。其基本流程如下
- 準(zhǔn)備4張牌1234,撕成兩半,并疊放在一起,從而8張牌的順序?yàn)?2341234,相同的數(shù)字,表示是同一張牌。
- 將上面的三張插入后面的牌里,將第四章牌壓在屁股下。也就是說,屁股下的牌是4,手里的牌盡管是亂的,但最下面的牌一定也是4 。接下來可以任意洗牌,只要保證4一直在最下面?,F(xiàn)場劉謙讓南方人拿一張牌插入中間,北方人拿兩張牌插入中間,如果不確定自己是南是北,就拿3張牌插中間。
- 男生扔一張,女生扔兩張,盡管二者分別剩下6/7張牌,但仍不改變最下面是4 ,但接下來,連續(xù)把7張牌放在最底下,這步讓男生的4變成倒數(shù)第二張、女生的4變成倒數(shù)第三張。
- 把最上面的牌放在最下面,然后扔掉第二張,重復(fù)操作,直到只剩下一張牌為止。
最后的結(jié)果是,剩下的是4。
python實(shí)現(xiàn)
下面用python實(shí)現(xiàn)這個(gè)魔術(shù)流程,首先實(shí)現(xiàn)一個(gè)比較常用的操作,即洗牌。將最上面的i ii張牌插入到剩下的牌中,實(shí)現(xiàn)代碼如下,其中N為插入牌的位置。
from random import randint def shuffle(lst, i): N = randint(i+1,len(lst)-1) return lst[i:N] + lst[:i] + lst[N:]
然后實(shí)現(xiàn)第4步操作,即留一張牌,然后扔一張牌,反復(fù)操作,直到只剩下一張。
def cleaner(lst): if len(lst) == 1: return lst[0] lst = lst[1:]+lst[:1] del lst[0] return cleaner(lst)
最后,實(shí)現(xiàn)主程序,代碼如下。其輸入l s t 為長度為4的序列,isMale為是男是女,fromN為正整數(shù),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)
見證奇跡
接下來,就是見證奇跡的時(shí)刻
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
可見,無論是男是女,最終輸出的都是相同的結(jié)果。
到此這篇關(guān)于利用Python實(shí)現(xiàn)劉謙春晚魔術(shù)的文章就介紹到這了,更多相關(guān)Python劉謙春晚魔術(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
import?sklearn報(bào)錯(cuò)正確安裝sklearn的解決方法
這篇文章主要介紹了import?sklearn報(bào)錯(cuò)正確安裝sklearn的解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04簡介Python設(shè)計(jì)模式中的代理模式與模板方法模式編程
這篇文章主要介紹了Python設(shè)計(jì)模式中的代理模式與模板方法模式編程,文中舉了兩個(gè)簡單的代碼片段來說明,需要的朋友可以參考下2016-02-02使用python腳本自動(dòng)創(chuàng)建pip.ini配置文件代碼實(shí)例
這篇文章主要介紹了使用python腳本自動(dòng)創(chuàng)建pip.ini配置文件代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09windows10 pycharm下安裝pyltp庫和加載模型實(shí)現(xiàn)語義角色標(biāo)注的示例代碼
這篇文章主要介紹了windows10 pycharm下安裝pyltp庫和加載模型實(shí)現(xiàn)語義角色標(biāo)注,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05