栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Python制作钻石ASCII艺术

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

使用Python制作钻石ASCII艺术

这是python。您可以使用许多有用的字符串函数,以少量的代码行来创建创造性的ASCII艺术。

一些最重要的问题是

str.join
str.Xjust
。我们还将利用
chr
ord
迭代字符范围。

首先,定义一个处理填充的函数。

def pad(c1, c2, sep='.', field_width=10):    out = sep.join(chr(x) for x in range(c2, c1, -1)).rjust(field_width, sep) # build the first part     return sep.join([out, chr(c1), out[::-1]])

第一行代码将构建菱形行的前半部分。第二行将上半部分与中心字母和上半部分的反向版本连接在一起。

接下来,确定范围-钻石的大小。

start = 'A'end = ...field_width = (ord(end) - ord('A')) * 2 - 1

现在,您将需要两个单独的循环-一个循环用于上面的菱形,另一个循环用于下面的菱形。两个循环都

pad
在每次迭代时调用。

for e in range(ord(end), ord(start), -1):    print(pad(e, ord(end), '.', field_width))for e in range(ord(start), ord(end) + 1):    print(pad(e, ord(end), '.', field_width))

end = 'E'

........E..............E.D.E..........E.D.C.D.E......E.D.C.B.C.D.E..E.D.C.B.A.B.C.D.E..E.D.C.B.C.D.E......E.D.C.D.E..........E.D.E..............E........

end = 'F'

..........F..................F.E.F..............F.E.D.E.F..........F.E.D.C.D.E.F......F.E.D.C.B.C.D.E.F..F.E.D.C.B.A.B.C.D.E.F..F.E.D.C.B.C.D.E.F......F.E.D.C.D.E.F..........F.E.D.E.F..............F.E.F..................F..........

塞思·迪夫利(Seth
Difley)的答案
探索了一种替代方法,该方法包括制造钻石的上半部分并将其反转以获得下半部分。实际上,也可以将这种方法用于该解决方案,具体方法如下:

lines = []for e in range(ord(end), ord(start) - 1, -1):    lines.append(pad(e, ord(end), '.', field_width))for x in lines + lines[-2::-1]:    print(x)

这也导致相同的输出,并且速度更快。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/646073.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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