如何在python中打印以下模式?

我想打印这个图案


         1

        12A

       123BA

      1234CBA

     12345DCBA

    123456EDCBA

   1234567FEDCBA

  12345678GFEDCBA

 123456789HGFEDCBA

12345678910IHGFEDCBA

我的这种模式的代码:


n=11

a=65

for i in range(1,n):

    for j in range(1,n-i):

        print(end=' ')

    for j in range(1,i+1):

        print(j,end='')

    for j in range(i-1,0,-1):

        ch=chr(a)

        print(ch,end='')

        a=a+1

    print()

但这是打印:


         1

        12A

       123BC

      1234DEF

     12345GHIJ

    123456KLMNO

   1234567PQRSTU

  12345678VWXYZ[\

 123456789]^_`abcd

12345678910efghijklm

我认为问题在于最后一个 for 循环,但我无法纠正它。有人可以帮忙吗?提前致谢。


料青山看我应如是
浏览 132回答 5
5回答

有只小跳蛙

打印第一行后a,值已从 65 更改,这就是为什么您只会增加字母,直到您处于特殊字符的字符代码处。保持固定并使用循环变量来计算正确的字母:n=11a = 65for i in range(1,n):    for j in range(1,n-i):        print(end=' ')    for j in range(1,i+1):        print(j,end='')    for j in range(i-1,0,-1):        ch=chr(a+j-1)    # Note the change here        print(ch,end='')    print()这打印         1        12A       123BA      1234CBA     12345DCBA    123456EDCBA   1234567FEDCBA  12345678GFEDCBA 123456789HGFEDCBA12345678910IHGFEDCBA

青春有我

这是一个小的改进。n=11a=65for i in range(1,n):    for j in range(1,n-i):        print(end=' ')    for j in range(1,i+1):        print(j,end='')    for j in range(i-2,-1,-1):        if i != 1:            ch=chr(a+j)            print(ch,end='')    print()

小怪兽爱吃肉

好吧,我喜欢这个:letters="IHGFEDCBA"lines = 11for i in range(lines,-1,-1):    print(i*' ' + ''.join([str(num) for num in range(1, lines-i)]) + letters[i:])但我不相信列表理解是否值得。

PIPIONE

您没有在每次迭代时重置 a 的值,i也没有在最后一个循环中使用 j 的值。n=11for i in range(1,n):    a=64  #note this is inside loop now and the value was reduced by 1    for j in range(1,n-i):        print(end=' ')    for j in range(1,i+1):        print(j,end='')    for j in range(i-1,0,-1):        ch=chr(a+j)  #note the change here        print(ch,end='')        a=a+1    print()由于您的 a 从未被重置为 65,因此该值超过了 90 并开始打印相应的 ascii 字符。

呼唤远方

我真的很亲近:n=11a=65for i in range(1,n):    a=65+i-2 # a need to actually end on char A    for j in range(1,n-i):        print(end=' ')    for j in range(1,i+1):        print(j,end='')    for j in range(i-1,0,-1):        ch=chr(a)        print(ch,end='')        a=a-1 # here we substract so we go backward!    print()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python