特定字符模式 Python



我正在尝试实现以下目标;

编写一个程序,生成以下输出,给出整数输入 n。

结果应如下所示;

n=1     n=2     n=3         n=4
+       A+B     AA+BB       AAA+BBB
+E+     A+E+B       AA+E+BB
C+D     +EEE+       A+EEE+B
C+E+D       +EEEEE+
CC+DD       C+EEE+D 
CC+E+DD
CCC+DDD

我在解决这个问题时遇到了问题。

当我输入 2 时,我目前得到以下内容,但无法使其看起来像上面一样。

当前结果;

A+
B+
E+
C+
D

这是我的代码;

def specific_pattern(n):
addition = "+"
alp = "A, B, E, C, D"
# myList = ["A, B, C, D, E"]
newList = []
for j in range(0, n):
for i in range(0, j):
if n == 1:
print(addition)
else:
letters = alp.split(", ")
for letter in range(len(letters)):
newList.append(letters[letter]*j+addition)
newchar = "".join(newList)
print(newchar[:-1])
n = int(input("Enter a number: "))
specific_pattern(n)

您可以使用简单的迭代来创建所需钻石的顶部和底部:

def sequence(d):
c, l = 0, 1
while c < d - 1:
if l%2:
yield l
c += 1
l += 1
def make_pattern(d):
t, b, r = f'{"A"*(d-1)}+{"B"*(d-1)}', f'{"C"*(d-1)}+{"D"*(d-1)}', list(sequence(d))
body = 'n'.join(f'{"A"*((r[-1]-i)//2)}+{"E"*i}+{"B"*((r[-1]-i)//2)}' for i in r[:-1]) + 
f'n+{"E"*r[-1]}+n'+'n'.join(f'{"C"*((r[-1]-i)//2)}+{"E"*i}+{"D"*((r[-1]-i)//2)}' for i in r[:-1][::-1])
return f'{t}n{body}n{b}'
def diamond(d):
return {1:lambda _:'+', 2:lambda _:'A+Bn+E+nC+D'}.get(d, make_pattern)(d)
print(diamond(3))
print('-'*5)
print(diamond(4))

输出:

AA+BB
A+E+B
+EEE+
C+E+D
CC+DD
-----
AAA+BBB
AA+E+BB
A+EEE+B
+EEEEE+
C+EEE+D
CC+E+DD
CCC+DDD

最新更新