1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

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

时间:2022-11-25 18:50:55

相关推荐

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

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

题目思路程序如下总结

题目

谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中中央挖空,其余均由更小的地毯组成。

现给定地毯大小(行数)与组成地毯的字符元素,请打印相应的地毯图形。

注:空腔以半角空格表示;当给定字符元素长度不为1时空格数须与字符长度对应

输入格式:

输入为两行,分别为地毯大小正整数N与组成元素字符串c

输入数据保证N为3的正整数幂

输出格式:

由N行长度为N*len©的字符串构成的谢尔宾斯基地毯

输入样例:

9

[]

思路

用递归方法

向最小格式迭代

每次按规律增加图形的长宽

程序如下

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]*3return mylistn = 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版课有感

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。