用Python制作钻石ASCII艺术品
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用Python制作钻石ASCII艺术品,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2550字,纯文字阅读大概需要4分钟。
内容图文
![用Python制作钻石ASCII艺术品](/upload/InfoBanner/zyjiaocheng/697/1f696727a4b142799f1b691b1d83d3fa.jpg)
我制作这颗钻石时遇到了麻烦.每当我使字符等于均匀长度时,结果都很好.然而,当它是奇数时,只有钻石的底部被弄乱了.我一直在工作几个小时,差不多完成了.先谢谢您的帮助.
chars = 'ABCDEF'
length = len(chars)
string = ''
dots = (length*2 - 1)*2 - 1
for i in range(length):
string1 = ''
string += chars[i]
length1 = len(string)
for j in range(0, length1):
if j % 2 != 0:
string1 += chars[length -1 - j].center(3, '.')
else:
string1 += chars[length - 1 - j]
for k in range(i - 1, -1, -1):
if k % 2 != 0:
string1 += chars[length - 1 - k].center(3, '.')
else:
string1 += chars[length - 1 - k]
string1 = string1.center(dots, '.')
print(string1)
string=''
for i in range(length - 1):
string1 = ''
string += chars[i]
length1 = len(string)
for j in range(length - 1 - i):
if j % 2 != 0:
string1 += chars[length - 1 - j]
else:
string1 += chars[length -1 - j].center(3, '.')
for k in range(i + 2, length):
if k % 2 != 0:
string1 += chars[k].center(3, '.')
else:
string1 += chars[k]
string1 = string1.center(dots, '.')
print(string1)
当char长度为奇数时
当字符长度均匀时
解决方法:
这是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))
结束=’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........
结束=’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’s answer探索了另一种方法,包括建造钻石的前半部分并将其反转以获得下半部分.实际上,这种方法也可以用于这种解决方案,类似于:
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)
这也导致相同的输出,并且更快.
内容总结
以上是互联网集市为您收集整理的用Python制作钻石ASCII艺术品全部内容,希望文章能够帮你解决用Python制作钻石ASCII艺术品所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。