前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

作者头像
全栈程序员站长
发布2022-09-14 11:06:21
5350
发布2022-09-14 11:06:21
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

题目

谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中中央挖空,其余均由更小的地毯组成。 现给定地毯大小(行数)与组成地毯的字符元素,请打印相应的地毯图形。 注:空腔以半角空格表示;当给定字符元素长度不为1时空格数须与字符长度对应 输入格式: 输入为两行,分别为地毯大小正整数N与组成元素字符串c 输入数据保证N为3的正整数幂 输出格式: 由N行长度为N*len©的字符串构成的谢尔宾斯基地毯 输入样例: 9 []

在这里插入图片描述
在这里插入图片描述

思路

用递归方法 向最小格式迭代 每次按规律增加图形的长宽

程序如下

代码语言:javascript
复制
def carpet(N, char):
    len_c = len(char)
    if N == 3:
        return [char*3, char + ' '*len_c + char, char*3]		#最小格式时直接输出
    else:
        mylist = carpet(N/3, char)		#将图形存为一个列表
        for j in range(2):		#增加竖向宽度
            for i in range(int(N/3)):
                mylist.append(mylist[i])		
        for i in range(len(mylist)):		#增加横向宽度
            if i >= N/3 and i < N/3*2:
                mylist[i] = mylist[i] + ' '*len_c * int(N/3) + mylist[i]	#中间留白
            else:
                mylist[i] = mylist[i]*3
        return mylist

n = int(input())
c = input()
# n = 27
# c = '[]'
if n == 0:	# n=0直接输出
    print('')
else:
    ans = carpet(n, c)
    for i in ans:	#打印图形
        print(i)

总结

增加长宽时,要注意carpet(N, char)中char字符的宽度


学习陈斌老师的数据结构与算法Python版课有感

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158629.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年7月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯
  • 题目
  • 思路
  • 程序如下
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档