栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python | 请编写一个程序,打印出如下示例中指定的正方形字母(假设最多26个字母)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python | 请编写一个程序,打印出如下示例中指定的正方形字母(假设最多26个字母)

Helsinki python programming part5.4 的最后一题。

Layers: 3

CCCCC
CBBBC
CBABC
CBBBC
CCCCC

Layers: 4

DDDDDDD
DCCCCCD
DCBBBCD
DCBABCD
DCBBBCD
DCCCCCD
DDDDDDD

解题思路是从外到内一圈圈的赋值,等二维数组形成的时候再用两个for循环把数字转换为字母。字母a的大写ASCII是65,所以在26个数字的基础上都加上64,就可以转为大写了。

# Write your solution here
layer = int(input("Layer: "))
sum_column = layer*2 -1
sum_row = layer*2-1
arr = [[0 for col in range(sum_column)]for row in range(sum_row)]  # 初始化数组
ini = 0

while layer >= 1:
    r = 0
    c = 0

# ---------------------完成初始化-----------------------
    for r in range(ini,sum_row-ini):
        if r == ini or r == sum_row-ini-1:
            for c in range(ini,sum_column-ini):
                arr[r][c] = layer
                c+=1
        else:
            r+=1
# ---------------完成第一行和最后一行的归数-----------------
    for c in range(ini,sum_column-ini):
        if c == ini or c == sum_row-ini-1:
            for r in range(ini,sum_row-ini):
                arr[r][c] = layer
        else:
            c+=1
# ---------------完成第一列和最后一列的归数-----------------
# 完成以上的循环以后,layer的层数需要少一层
    layer-=1
    ini +=1


# 转换layer数字代表的字母,加上96,再进行ASCII的转换。chr()
c = 0
r = 0
l = len(arr)

for r in range(l):
    for c in range(l):
        arr[r][c] = chr(arr[r][c]+64)
        print(arr[r][c],end="")
    print()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968788.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号