我做这颗钻石有困难。每当我做一个偶数长度的木炭,结果都很好。然而,当它是奇怪的,只有底部的钻石得到混乱。我已经花了好几个小时在这上面了,快完成了。提前谢谢你的帮助。在
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)
当字符长度为奇数时
当字符长度为偶数时
策略:由于钻石的上半部分是由现有程序正确呈现的,因此生成上半部分,然后通过颠倒上半部分的线条来生成下半部分。
build_diamond
返回一个包含上半部分字符串的列表。print('\n'.join(string_list))
打印上半部分。bottom_of_diamond_string_list = list(reversed(string_list))[1:]
从上半部分反转字符串,并用[1:]
删除中间字符串,以获得下半部分的字符串。print('\n'.join(bottom_of_diamond_string_list))
打印下半部分。测试并适用于5和6(偶数和奇数)chars
长度。如果需要,可以进行更多的代码清理。在这是Python。有许多有用的字符串函数可以用来在几行代码中创建创造性的ASCII艺术。在
其中最重要的是
str.join
,str.Xjust
。我们还将使用chr
和ord
来迭代字符范围。在首先,定义一个处理填充的函数。在
第一行代码将构建菱形行的前半部分。第二行将上半部分与中间字母连接起来,与前半部分相反。在
下一步,确定范围-你的钻石将有多大。在
^{pr2}$现在,您需要两个单独的循环-一个用于上部菱形,另一个用于下部菱形。两个循环在每次迭代时都调用
pad
。在end = 'E'
:end = 'F'
:Seth Difley's answer探索了另一种方法,即构建钻石的前半部分,然后将其反转以获得下半部分。事实上,这种方法也可以用于这种解决方案,大致如下:
这也会产生相同的输出,而且速度更快。在
相关问题 更多 >
编程相关推荐