栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python魔术师算法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python魔术师算法

python魔术师算法

最近刚开学,专业课新开了一门《python程序设计基础》,不得不说python真是火,我们终于赶上潮流了,python非常优雅,也非常严格,刚学了条件语句,我就突发奇想,想到了初中时一个同学,跟我炫技过的一个扑克魔术,虽然这个魔术我非常熟悉,但是它背后的数学原理我一直搞不懂(我猜测是某种排序算法),我决定用python的条件语句实现它。

首先,我先说一下这个魔术的实现步骤,从扑克牌中随机找15张牌,抽出一张牌知道结果后放回,然后15张牌平均分成三份,经提示后反复洗牌进行排序,三次排序后,目标牌一定会在八号牌的位置上。

实现过程

1、15张随机的牌,我们可以用python内置的random模块实现

2,15张牌随机组成一个数字列表,切片读取分成三组,注意是顺序分组

切片的步长为3

3、输入:用户输入大,小判断位置

4、一个if语句嵌套包含三个条件判断,三个语句判断为一轮,三轮以后输出结果并进行验证

代码片段
random_list=[2,34,5,7,64,9,87,53,77,81,100,110,44,55,28]
print(random_list)
print("请随意选取上面一组随机数组中的任意一个数,请你记下来无需输入!")
print("现在计算机把数组平均分成三组数,请你按照指令进行操作")
#列表读取,第一次排序重组
print("现在让我们进行第一轮游戏")
random_list1=list(random_list[0:13:3])
random_list2=list(random_list[1:14:3])
random_list3=list(random_list[2:15:3])
print(random_list1)
user=input('你心里的那个数字是不是在这组数中,是的话输入'y',不是的话输入'n':')
if user=='n':
    print(random_list2)
    user = input('你心里的那个数字是不是在这组数中,是的话输入'y',不是的话输入'n':')
    if user=='n':
        print(random_list3)
        user = input('你心里的那个数字是不是在这组数中,是的话输入'y',不是的话输入'n':')
        if user=='y':
            random_list=random_list1+random_list3+random_list2
            print("现在我们要进行第二轮游戏,请依然按照指令进行")
            random_list1 = list(random_list[0:13:3])
            random_list2 = list(random_list[1:14:3])
            random_list3 = list(random_list[2:15:3])
            print(random_list1)
            user = input('你心里的那个数字是不是在这组数中,是的话输入'y',不是的话输入'n':')
            if user == 'n':
                print(random_list2)
                user = input('你心里的那个数字是不是在这组数中,是的话输入'y',不是的话输入'n':')
                if user == 'n':
                    print(random_list3)
                    user = input('你心里的那个数字是不是在这组数中,是的话输入'y',不是的话输入'n':')
                    if user == 'y':
                        random_list = random_list1 + random_list3 + random_list2
                        print("现在我们要进行第三轮游戏,请依然按照指令进行")
                        random_list1 = list(random_list[0:13:3])
                        random_list2 = list(random_list[1:14:3])
                        random_list3 = list(random_list[2:15:3])
                        print(random_list1)
                        user = input('你心里的那个数字是不是在这组数中,是的话输入'y',不是的话输入'n':')
                        if user == 'n':
                            print(random_list2)
                            user = input('你心里的那个数字是不是在这组数中,是的话输入'y',不是的话输入'n':')
                            if user == 'n':
                                print(random_list3)
                                user = input('你心里的那个数字是不是在这组数中,是的话输入'y',不是的话输入'n':')
                                if user == 'y':
                                    print("你心中的数字是不是:",random_list3[2],"?")
                            else:
                                print("你心中的数字是不是:",random_list2[2],"?")
                        else:
                            print("你心中的数字是不是:",random_list1[2],"?")

这个算法的实现主要是通过不断的重复和排序,三次列表的切片和列表的重排实现,其实只是在第一轮游戏中实现语句,后面的两轮都是对上一轮的调用。现在对python的函数封装还有点陌生,等过段时间再用函数封装实现这个算法估计代码量减少40%。主要是这个算法非常有意思,加上交互式的输入输出,感觉就像是魔术,当然纯属娱乐,练习之用,供大家打发时间。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/316099.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号