You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 12:45:32