目录
打乱勺子、筷子、杯子的顺序筷子和左边的互换杯子和右边的互换勺子和左边的互换拿起东西大家好,我看了春晚拿杯子的魔术,想着着肯定有时数学问题,就试着用python实现了一下
打乱勺子、筷子、杯子的顺序
我们可以用以下代码实现:
import randomkuaizi = '筷子'shaozi = '勺子'beizi = '杯子'l = [kuaizi, shaozi, beizi]random.shuffle(l)
筷子和左边的互换
i = l.index(kuaizi)if i != 0: l[i-1], l[i] = l[i], l[i-1]
杯子和右边的互换
i = l.index(beizi)if i != 2: l[i+1], l[i] = l[i], l[i+1]
勺子和左边的互换
i = l.index(shaozi)if i != 0: l[i-1], l[i] = l[i], l[i-1]
拿起东西
print("左手:",l[0],"右手:",l[2])
输出可知,无论怎么运行,都输出的是右手拿杯子,让我们来验证一下:
import randomkuaizi = '筷子'shaozi = '勺子'beizi = '杯子'j = 0for _ in range(1000000): l = [kuaizi, shaozi, beizi] random.shuffle(l) # 筷子和左边的互换 i = l.index(kuaizi) if i != 0: l[i-1], l[i] = l[i], l[i-1] #杯子和右边的互换 i = l.index(beizi) if i != 2: l[i+1], l[i] = l[i], l[i+1] #勺子和左边的互换 i = l.index(shaozi) if i != 0: l[i-1], l[i] = l[i], l[i-1] if l[2] == beizi: j += 1print(j/1000000)
最后输出1.0,说明右手一定会拿起杯子的,有人能解释一下吗