<p>策略:由于钻石的上半部分是由现有程序正确呈现的,因此生成上半部分,然后通过颠倒上半部分的线条来生成下半部分。<code>build_diamond</code>返回一个包含上半部分字符串的列表。<code>print('\n'.join(string_list))</code>打印上半部分。<code>bottom_of_diamond_string_list = list(reversed(string_list))[1:]</code>从上半部分反转字符串,并用<code>[1:]</code>删除中间字符串,以获得下半部分的字符串。<code>print('\n'.join(bottom_of_diamond_string_list))</code>打印下半部分。测试并适用于5和6(偶数和奇数)<code>chars</code>长度。如果需要,可以进行更多的代码清理。在</p>
<pre><code>chars = 'ABCDEF'
length = len(chars)
def build_diamond(length):
dots = (length*2 - 1)*2 - 1
string = ''
string_list = []
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, '.')
string_list.append(string1)
return string_list
if __name__ == '__main__':
string_list = build_diamond(length)
print('\n'.join(string_list))
bottom_of_diamond_string_list = list(reversed(string_list))[1:]
print('\n'.join(bottom_of_diamond_string_list))
</code></pre>