""" 回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转90度。 一开始位于矩阵左上角,方向向下。 """ # 输入行数与列数, # map对序列中的每个数据取整,返回map对象,再用list转换成列表 row,col=list(map(int,input().split(','))) # 形成数据矩形,二维嵌套列表 data_list=[] c = 1 for x in range(row): nest = [] for y in range(col): nest.append(c) c = c + 1 data_list.append(nest) begin_r = row # 开始行 begin_c = col # 开始列 rounds=0 # 表示圈 answers=[] # 结果列表 def get_one_round(begin_r,begin_c,rounds): """递归函数,获取一圈数据,从左上往下逆时针旋转。""" for r in range(rounds,begin_r): # 列固定,行变化 answers.append(data_list[r][0+rounds]) for c in range(1+rounds,begin_c): # 行固定,列变化 answers.append(data_list[begin_r-1][c]) for r in range(begin_r-2,rounds-1,-1): # 开始的列要大于rounds才添加到列表中,防止重复添加数据 if begin_c > rounds:answers.append(data_list[r][begin_c-1]) for c in range(begin_c-2,rounds,-1): if begin_r > rounds: answers.append(data_list[rounds][c]) rounds+=1 if(rounds>=begin_r-1 or rounds>=begin_c-1): return # 接下来获取更小的一圈的数据 get_one_round(begin_r-1,begin_c-1,rounds) get_one_round(begin_r,begin_c,rounds) for i in range(len(answers)): print(answers[i], end=' ' if i != len(answers)-1 else '')
本站所有作品,教程等皆为原创,版权所有。只供个人及单位内部研究使用,对外展示或传播必需经本站同意,且注明来自本站。培训机构等用本站资源培训学生,需经本站授权。一旦付款,表示同意本站知识付费原则:数字商品,不支持退款。亦可直接向微信号scratch8付款购买。入住QQ群:225792826 和爱好者共同交流,并且能下载免费提供的Python资源(需提供真实姓名才可入群)
李兴球的博客_Python创意编程技术前沿_pygame » 工信部蓝桥杯Python取回形取数答案
李兴球的博客_Python创意编程技术前沿_pygame » 工信部蓝桥杯Python取回形取数答案