Python模式

Python模式,python,loops,design-patterns,conditional-statements,Python,Loops,Design Patterns,Conditional Statements,我不知道怎么做,我一直遇到问题 代码如下: rows = int(input()) for i in range(1,rows): for j in range(1,i+1): print(" ", end='') for j in range(i, rows+1): print(j, end='') print() for i in range(rows,0,-1): for j in range(1,i+1):

我不知道怎么做,我一直遇到问题

代码如下:

rows = int(input())

for i in range(1,rows):
    for j in range(1,i+1):
        print(" ", end='')

    for j in range(i, rows+1):
        print(j, end='')
    print()

for i in range(rows,0,-1):
    for j in range(1,i+1):
        print(" ", end='')

    for i in range(i, rows+1):
        print(j,end='')
        j = j+1   
    print()
第一列中的空格

如何删除它


这里,rows=6(作为用户的输入)

我认为这有点简洁:

lst = [str(i) for i in range(1, rows+1)]
for i in range(rows):
    print((" "*i) + "".join(lst[i:]) )

for i in range(rows-2, -1, -1):
    print((" "*i) + "".join(lst[i:]) )
其结果是:

12345
 2345
  345
   45
    5
   45
  345
 2345
12345
这:

给定任何正行号(f.e.
rows=6
),总是从打印至少一个空格开始

您还在计数
i
时还弄坏了较低的数字打印循环并打印了
j

修正:


对于这种格式,可以使用:

rows = int(input())   # 5
tobeprinted=''.join(map(str,range(1,rows+1)))

for n in range(rows):
    print(f"{tobeprinted[n:]:>{rows}}")   # right align formatting
for n in range(rows-2 ,-1,-1):
    print(f"{tobeprinted[n:]:>{rows}}")   # right align formatting
输出:

12345
 2345
  345
   45
    5
   45
  345
 2345
12345
对代码进行了一些更改(范围从2开始)。现在可以了。但是,我相信您的代码不是实现这一点的最佳方式


行=int(输入())
对于范围内的i(1行):
对于范围(2,i+1)内的j:
打印(“”,结束=“”)
对于范围内的j(i,行+1):
打印(j,end='')
打印()
对于范围内的i(行,0,-1):
对于范围(2,i+1)内的j:
打印(“”,结束=“”)
对于范围内的j(i,行+1):
打印(j,end='')
j=j+1
打印()

你把你的空间打印循环缩短一次怎么样?我做了,然后又把它搞砸了。
for i in range(1,rows):
    for j in range(1,i+1):  # prints at least one spacce
        print(" ", end='')
rows = int(input())

for i in range(1,rows+1):
    for j in range(1,i):      # fix here
        print(" ", end='')

    for k in range(i, rows+1):
        print(k, end='')
    print()

for i in range(rows-1,0,-1):
    for j in range(1,i):      # fix here 
        print(" ", end='')

    for i in range(i, rows+1):   # some fixing here,
        print(i,end='')          # you mangled i/j
    print()
rows = int(input())   # 5
tobeprinted=''.join(map(str,range(1,rows+1)))

for n in range(rows):
    print(f"{tobeprinted[n:]:>{rows}}")   # right align formatting
for n in range(rows-2 ,-1,-1):
    print(f"{tobeprinted[n:]:>{rows}}")   # right align formatting
12345
 2345
  345
   45
    5
   45
  345
 2345
12345