春晚魔术python实现

查看 102|回复 9
作者:lccccccc   
春晚魔术python实现
大家好,我看了春晚拿杯子的魔术,想着着肯定有时数学问题,就试着用python实现了一下
打乱勺子、筷子、杯子的顺序
我们可以用以下代码实现:
import random
kuaizi = '筷子'
shaozi = '勺子'
beizi = '杯子'
l = [kuaizi, shaozi, beizi]
random.shuffle(l)

筷子和左边的互换
i = l.index(kuaizi)
if i != 0:
    l[i-1], l = l, l[i-1]
杯子和右边的互换
i = l.index(beizi)
if i != 2:
    l[i+1], l = l, l[i+1]
勺子和左边的互换
i = l.index(shaozi)
if i != 0:
    l[i-1], l = l, l[i-1]
拿起东西
print("左手:",l[0],"右手:",l[2])
输出可知,无论怎么运行,都输出的是右手拿杯子,让我们来验证一下:
import random
kuaizi = '筷子'
shaozi = '勺子'
beizi = '杯子'
j = 0
for _ in range(1000000):
    l = [kuaizi, shaozi, beizi]
    random.shuffle(l)
    # 筷子和左边的互换
    i = l.index(kuaizi)
    if i != 0:
        l[i-1], l = l, l[i-1]
    #杯子和右边的互换
    i = l.index(beizi)
    if i != 2:
        l[i+1], l = l, l[i+1]
    #勺子和左边的互换
    i = l.index(shaozi)
    if i != 0:
        l[i-1], l = l, l[i-1]
    if l[2] == beizi:
        j += 1
print(j/1000000)
最后输出1.0,说明右手一定会拿起杯子的,有人能解释一下吗

勺子, 杯子

ldc0419   

6666666
hu123123123   

与时俱进  这么快就出代码了
炽日夕辉   

代码实现了将杯子移到最右边,其他东西移到左边的操作
YukijudaiNsmy   

感谢分享,辛苦啦,除夕都还在发帖,新年快乐
fengqingzhi11   

代码可以模拟,或者创造一切
leis00   

真快啊,新年快乐
Email   

新年快乐
crazyxsl   

厉害的,可以
風信子   

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