- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在制作这颗钻石时遇到了问题。每当我使字符等于偶数长度时,结果都很好。然而,当它很奇怪时,只有钻石的底部被弄乱了。我一直在为此工作数小时,快完成了。预先感谢您的帮助。
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)
当字符长度为奇数时
当字符长度为偶数时
最佳答案
这是 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'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 - 用 Python 制作钻石 ASCII 艺术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46019607/
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有几个 div,我想将它们旋转成菱形,但我不希望它们的背景图像旋转,我该如何实现?这是我现在的代码 dj-1-overlay.png" /> 和我的 CSS: #diamonds div { -
我正在制作 Canvas 动画,其中一个图像应该是钻石。 现在,我做到了这一点: ctx[0].beginPath(); ctx[0].moveTo(0,-80); ctx[0].lineTo(-60
考虑以下几点: #include #include using namespace std; class A { public: A(const char* sName) //convers
以某种方式检测 charuco 钻石对我来说不适用于更大的图像。使用我的 1920x1080 原始图像,它既不能可靠地识别 id(菱形 id 元素每次都在切换位置)。在第一张图片中,您可以看到它识别出
下面的代码是关于菱形继承(钻石问题)的。虚拟继承解决了这种歧义。 #include using namespace std; class A { public: voi
我目前正在开发 2D 等距 map 编辑器。我显示包含点和纹理的实体(立方体,播放器)。每个立方体由12个点组成。(12个点,但在sfml(sf::VertexArray)显示时作为4个点的3条边处理
如何在 iOS 的 openframeworks 中构建 3d 钻石?我很难在 openframeworks 中找到有用的 3d 渲染教程,我来自 Processing。 最佳答案 我认为这个故事有两
我是一名优秀的程序员,十分优秀!