#外循环13次,每次将一张牌放入空盒中for i inrange(1,14):# i表示牌的序号# n用来记录当前的空盒序号,初值为1
n =1# 每次都从一个空盒开始重新计数while n <= i:# 如果盒子非空,继续找下一个盒子# 如果盒子为空,判断盒子序号与牌的序号是否相同,相同则存入,不同则继续找
2)将i号牌放入空盒。
该功能使用while循环结构实现,代码如下:
while n <= i:if j >13:
j =1if a[j]:# 盒子非空,跳过该盒子
j +=1else:if n == i:# 判断该盒子是否为第i个空盒
a[j]= i # 是则将i存入
j +=1
n +=1
程序流程图如图所示。
5.完整的程序
根据上面的分析,编写程序如下:
%%time
# 猜牌术if __name__ =='__main__':
a =[0]*14# 初始化列表,用来存放13张牌
j =1# j是数组的下标,空盒子的序号print("魔术师手中的牌原始次序是:")# 外循环13次,每次将一张牌放入空盒中for i inrange(1,14):# i表示牌的序号# n用来记录当前的空盒序号,初值为1
n =1# 每次都从一个空盒开始重新计数while n <= i:if j >13:
j =1if a[j]:# 盒子非空,跳过该盒子
j +=1else:if n == i:# 判断该盒子是否为第i个空盒
a[j]= i # 是则将i存入
j +=1
n +=1print(a[1:])