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%。主要是这个算法非常有意思,加上交互式的输入输出,感觉就像是魔术,当然纯属娱乐,练习之用,供大家打发时间。
本文介绍了使用Python编程实现一个基于条件语句的扑克魔术算法。该魔术涉及从15张扑克牌中抽牌,经过特定步骤的排序后,目标牌会出现在第八个位置。文章详细阐述了实现过程,包括随机生成牌组、按顺序分组、用户输入判断及排序逻辑,并提到待优化的函数封装方法。

1389

被折叠的 条评论
为什么被折叠?



