如何用Python实现字母螺旋矩阵?
问题描述
需要实现字母螺旋矩阵,输入正整数n后输出对应大小的螺旋排列字母矩阵:
- 输入
3时,输出:
A B C H I D G F E
- 输入
5时,输出:
A B C D E P Q R S F O X Y T G N W V U H M L K J I
现有代码及当前问题
当前代码仅按行顺序填充字母,无法实现螺旋排列:
print("input :") n = int(input()) alphabet= 65 for i in range(n): print((n+i)*" ") for j in range(i, i+n): print(chr(alphabet), end=" ") alphabet = alphabet + 1 print()
运行结果示例:
- 输入
5输出:
A B C D E F G H I J K L M N O P Q R S T U V W X Y
- 输入
3输出:
A B C D E F G H I
修改后的代码及实现思路
思路
螺旋矩阵需要按左→右→下→左→上的循环方向填充字母,每完成一圈就缩小边界。通过维护上、下、左、右四个边界值,依次处理每个方向的填充,直到所有位置填满。
代码
n = int(input()) # 初始化n×n的矩阵,用空格占位 matrix = [[" " for _ in range(n)] for _ in range(n)] alphabet = 65 top, bottom = 0, n - 1 left, right = 0, n - 1 while alphabet <= 65 + n * n - 1: # 左到右填充上边界 for col in range(left, right + 1): matrix[top][col] = chr(alphabet) alphabet += 1 top += 1 if top > bottom: break # 上到下填充右边界 for row in range(top, bottom + 1): matrix[row][right] = chr(alphabet) alphabet += 1 right -= 1 if left > right: break # 右到左填充下边界 for col in range(right, left - 1, -1): matrix[bottom][col] = chr(alphabet) alphabet += 1 bottom -= 1 if top > bottom: break # 下到上填充左边界 for row in range(bottom, top - 1, -1): matrix[row][left] = chr(alphabet) alphabet += 1 left += 1 if left > right: break # 格式化打印矩阵 for row in matrix: print(" ".join(row))
测试结果
- 输入
3输出:
A B C H I D G F E
- 输入
5输出:
A B C D E P Q R S F O X Y T G N W V U H M L K J I
内容的提问来源于stack exchange,提问作者Udin
相关产品推荐
相关产品推荐

