陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯
2023-06-13 09:12:31 时间
大家好,又见面了,我是你们的朋友全栈君。
陈斌老师《数据结构与算法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]*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
相关文章
- Python学习笔记:几种排序算法
- 为什么python读取不了文件_python系统找不到指定文件怎么办
- Python IDE —— PyCharm的基本介绍「建议收藏」
- Python 分形算法__代码里开出来的数学之花
- python中矩阵的转置_[转]Python中的矩阵转置[通俗易懂]
- Python实现k-近邻算法案例学习
- Python_note_003(Python中的输入函数input()、运算符用法)「建议收藏」
- PyPDF2 | 利用 Python 实现 PDF 分割
- python中关于命名的例子_Python 命名规范入门实例「建议收藏」
- 怎么用python打开csv文件_Python文本处理之csv-csv文件怎么打开[通俗易懂]
- 【说站】Python列表推导式如何使用
- 【说站】python实现排序算法的可视化
- pycharm怎么配置tensorflow环境_python tensorflow安装
- python输出unicode编码_Python以utf8编码读取文件
- 让python快到飞起-cupy
- Python基于知识图谱的医生推荐系统
- python 多线程那些事
- Java2023算法面试题java,python,go
- python生成验证码,文字转换为图片详解编程语言
- 快速安装Python MySQL模块(python安装mysql模块)
- 掌握Linux环境下的Python编程(linux执行python)
- Linux 下 Python 升级:轻松完成升级操作(linux下升级python)
- python选择排序算法的实现代码
- python解析模块(ConfigParser)使用方法