- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-4000
5.4.2神奇魔方阵
魔方阵又称纵横图,是一种n行n列、由自然数1~n×n组成的方阵,该方阵中的数符合以下规律:
方阵中的每个元素都不相等。
每行、每列以及主、副对角线上的个元素之和都相等。
本案例要求编写程序,输出一个5行5列的魔方阵。
实例目标
通过完成本实例,读者应掌握以下知识或技能:
熟练地使用列表推导式创建列表
熟练访问列表的元素
实例分析
下面先看如下的3*3的魔方阵:
?8 1 6? 3 5 7? 4 9 2?
观察以上的魔方阵,可以得出如下规律:
1位于第1行的中间一列;
2~n*n之间的各数字依次按下列规律放置:每个数所放置的行数比前一个数的行数少1,列数比前一个数的列数多1。例如,5位于4的上一行、后一列。
若前一个数字的行数为1,则后一个数的行数为n(最后一行)。例如,1位于第一行、中间一列,2位于最后一行、最后一列。
若前一个数的列数为n,则后一个数的列数为1。例如,2位于第n列,3位于第1列。
若按照上面的规则放置时某位置上已经有数字,或者前一个数字位于第1行、第n列,则将后一个数放置到前一个数字的下方。例如,4按上面的规则应被放置于第1行、第2列,但因为该位置已被其他数字1占据,所以被放置于数字3的下方。
本实例可按照以上规律实现一个5行5列的魔方阵,也就是说将1~25分别填写到方阵的前一个某位置上。我们可以先创建一个嵌套5个列表元素的列表,其中每个列表元素对应魔方阵的一行数据。
代码实现
n = 5
# 5*5二维列表
magic_square = [[0 for x in range(n)]
for y in range(n)]
i = n / 2
j = n – 1
num = 1
while num = (n * n):
if i == -1 and j == n:
j = n – 2
i = 0
else:
if j == n:
j = 0
if i 0:
i = n – 1
if magic_square[int(i)][int(j)]:
j = j – 2
i = i + 1
continue
else:
magic_square[int(i)][int(j)] = num
num = num + 1
j = j + 1
i = i – 1
for i in range(0, n):
for j in range(0, n):
print(%2d % (magic_square[i][j]),end=)
if j == n - 1:
print()
代码测试
运行代码,结果如下所示:
9 3 22 16 15
2 21 20 14 8
25 19 13 7 1
18 12 6 5 24
11 10 4 23 17
您可能关注的文档
- 大学生就业指导 6 保障就业权益(41).pptx
- 大学生就业指导 1-1 就业指导概述 (42).pptx
- 大学生就业指导 1-2 熟悉就业制度与政策(54).pptx
- 大学生就业指导 2-1 建立生涯意识(45).pptx
- 大学生就业指导 2-2 全面探索自我--2 兴趣(50).pptx
- 《汽车保险与理赔》第3版课件5-2 车损险理赔实例.pptx
- 《汽车保险与理赔》第3版课件5-3 汽车三责险理赔实例 .pptx
- 《汽车保险与理赔》第3版课件5-4 我国汽车其他保险理赔实例.pptx
- 《汽车保险与理赔》第3版课件5-5 汽车保险欺诈实例.pptx
- 《汽车保险与理赔》课程PPT---4.1 汽车保险事故索赔新 - 副本.pptx
- Python快速编程入门5.7.1 青春有你 实训文档.docx
- Python快速编程入门6.6.1 角谷猜想 实训文档.docx
- Python快速编程入门6.6.2 饮品自动售货机 实训文档.docx
- Python快速编程入门6.8.1 兔子数列 实训文档.docx
- Python快速编程入门6.8.2 归并排序 实训文档.docx
- Python快速编程入门6.9 阶段案例——学生管理系统 实训文档.docx
- Python快速编程入门7.4.1 信息安全策略——文件备份 实训文档.docx
- Python快速编程入门7.4.2 用户账户管理 实训文档.docx
- Python快速编程入门8.5.1 好友管理系统 实训文档.docx
- Python快速编程入门8.5.2 生词本 实训文档.docx
文档评论(0)