order = int(input("Enter the order : "))
c = ord("A")
d = 1
for i in range(order,0,-1):
for j in range(i):
print(" ",end=" ")
for k in range(0, d): # iter from 0 to number of letters in the row
print(chr(c - k),end=" ") # backtrack from starting letter
d=d+1 # increment d before updating c
c = c + d # update c to be the starting letter of the next row
print()
返回结果
Enter the order : 4
A
C B
F E D
J I H G
print(chr(c))
时,你需要反转c
的方向,因为你想要按相反的顺序打印字母。这很容易做到,只需要添加几行额外的代码。c
应该从你想要打印的字符的最后一个(按字母顺序)ascii值开始(在特定行上)。在你的for k
循环之前,通过说c += d
来实现此目的。c
递减1。我们在你的for k
循环的开头添加c -= 1
。c
推回到下一个字母。由于我们打印了d
个字母,所以在for k
循环之后,只需添加c+=d
即可。这最后一部分可能有点令人困惑。例如,其中一行打印的是J I H G
。打印此行后,c
具有G
的ASCII值,但我们希望能够打印J
后面的下一个字母,而不是G
,这就是为什么我们再次添加d
值的原因。order = int(input("Enter the order : "))
c = ord("A")
d = 1
for i in range(order,0,-1):
for j in range(i):
print(" ",end=" ")
c += d
for k in range(d):
c -= 1
print(chr(c),end=" ")
c += d
d += 1
print()
输出:
Enter the order : 6
A
C B
F E D
J I H G
O N M L K
U T S R Q P
P.S
x = x + 1
,更符合 Python 风格的是写成 x += 1
。对于其他所有数学运算也是如此。将 x = x*3
改写为 x *= 3
。for k in range(1, d+1)
可以更简洁地写成 for k in range(d)
cols = int(input("Enter the order : "))
end = cols - 1
c = ord('A')
for r in range(cols):
l = [chr(c+count) for count in range(cols-end)]
c=c+len(l)
l.extend(' '*end)
end = end -1
l.reverse()
print(' '.join(l))
输出:
A
C B
F E D
J I H G
O N M L K