使用字母表可以在PYTHON中获取此模式

使用字母表可以在PYTHON中获取此模式,python,python-3.x,Python,Python 3.x,想要的图案是这样的吗 使用此代码 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+

想要的图案是这样的吗

使用此代码

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  
当您
打印(chr(c))
时,您基本上需要反转
c
移动的方向,因为您希望以相反的顺序打印字母。这很简单,只需要几行额外的代码就可以完成

首先,
c
应该从要打印的字符(在该特定行上)的最后一个(按字母顺序)ascii值开始。这是通过在循环的
for k
for之前说
c+=d
来实现的

然后,因为我们要向后走,我们需要每次将
c
递减1。我们在
for k
循环的最开始添加
c-=1

最后,我们需要将
c
推回到下一个字母。因为我们打印了
d
字母,所以我们只需在k循环的
之后添加
c+=d
。这最后一点可能看起来有点混乱。例如,打印的行之一是
jihg
。打印此行后,
c
的ascii值为
G
,但我们希望能够打印
J
之后的下一个字母,而不是
G
,这就是为什么我们再次添加
d
的值

完成的代码是

order=int(输入(“输入顺序:”)
c=作战需求文件(“A”)
d=1
对于范围内的i(顺序为0,-1):
对于范围(i)中的j:
打印(“,end=”“)
c+=d
对于范围(d)中的k:
c-=1
打印(chr(c),end=“”)
c+=d
d+=1
打印()
输出:

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
        A
      C B
    F E D
  J I H G
O N M L K
p.S

  • 与其写
    x=x+1
    ,不如说
    x+=1
    。这是所有其他数学运算的情况
    x=x*3
    可以重新编写为
    x*=3
  • 对于范围(1,d+1)中的k
    可以更简洁地写成
    对于范围(d)中的k
  • 当您
    打印(chr(c))
    时,您基本上需要反转
    c
    移动的方向,因为您希望以相反的顺序打印字母。这很简单,只需要几行额外的代码就可以完成

    首先,
    c
    应该从要打印的字符(在该特定行上)的最后一个(按字母顺序)ascii值开始。这是通过在循环的
    for k
    for之前说
    c+=d
    来实现的

    然后,因为我们要向后走,我们需要每次将
    c
    递减1。我们在
    for k
    循环的最开始添加
    c-=1

    最后,我们需要将
    c
    推回到下一个字母。因为我们打印了
    d
    字母,所以我们只需在k
    循环的
    之后添加
    c+=d
    。这最后一点可能看起来有点混乱。例如,打印的行之一是
    jihg
    。打印此行后,
    c
    的ascii值为
    G
    ,但我们希望能够打印
    J
    之后的下一个字母,而不是
    G
    ,这就是为什么我们再次添加
    d
    的值

    完成的代码是

    order=int(输入(“输入顺序:”)
    c=作战需求文件(“A”)
    d=1
    对于范围内的i(顺序为0,-1):
    对于范围(i)中的j:
    打印(“,end=”“)
    c+=d
    对于范围(d)中的k:
    c-=1
    打印(chr(c),end=“”)
    c+=d
    d+=1
    打印()
    
    输出:

    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
    
            A
          C B
        F E D
      J I H G
    O N M L K
    
    p.S

  • 与其写
    x=x+1
    ,不如说
    x+=1
    。这是所有其他数学运算的情况
    x=x*3
    可以重新编写为
    x*=3
  • 对于范围(1,d+1)中的k
    可以更简洁地写成
    对于范围(d)中的k

  • 使用相同的方法,稍微更改第二个内部循环以及更新
    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 
    

    使用相同的方法,稍微更改第二个内部循环以及更新
    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 
    

    下面是一个创建输出的简单方法

    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))
    
    输出:

    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
    
            A
          C B
        F E D
      J I H G
    O N M L K
    

    下面是一个创建输出的简单方法

    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))
    
    输出:

    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
    
            A
          C B
        F E D
      J I H G
    O N M L K
    

    谢谢你的回答,也谢谢你的建议。我是一个新的程序员,所以我不太熟悉短版本。谢谢你的回答,也谢谢你的建议。我是一个新的程序员,所以我不太熟悉短版本。