想要的模式是

使用此代码
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(1,d+1):
#c=c-1
print(chr(c),end=" ")
c=c+1
d=d+1
print()我得到了这样的模式:
A
B C
D E F
G H I J 发布于 2019-11-19 16:24:18
使用同样的方法,稍微改变您的第二个内部循环以及更新c的方式应该是这样的:
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 发布于 2019-11-19 16:23:28
当你print(chr(c))的时候,你基本上需要反转c移动的方向,因为你想用相反的顺序打印字母。这很容易,只需再多几行就可以完成。
首先,c应该从您要打印的字符(按字母顺序)的最后(按字母顺序)开始(在该特定行上)。这是通过在c += d循环之前说for k来完成的。
然后,由于我们正在倒退,我们需要每次减少1 c。我们在c -= 1循环的开头添加for k。
最后,我们需要将c推回下一个字母。因为我们打印了d字母,所以我们只在for k循环之后添加c += d。最后一点可能会让人有点困惑。例如,打印的行之一是J I H G。打印这一行后,c的ascii值为G,但我们希望能够在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 PP.S
x = x + 1,更多的是节奏曲,比如x += 1。这是所有其他数学运算的情况。x = x*3可以重写为x *= 3。for k in range(1, d+1)可以写得更简洁一些,如for k in range(d)发布于 2019-11-19 16:54:10
这里有一个更简单的方法来创建您的输出。
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 Khttps://stackoverflow.com/questions/58938182
复制相似问题