使用python创建带数字的模式

使用python创建带数字的模式,python,python-3.4,Python,Python 3.4,我正在尝试制作一个程序来打印一个图案,例如: n=4 这就是我现在所拥有的: n = int(input("Please enter a positive integer: ")) line = "" for currentNum in range(1,n+1): line = " " * (n-currentNum) + line + str(currentNum) print(line) 我没有得到我希望得到的适当数量的空间。有什么建议吗?谢谢 这就是我正在做的:

我正在尝试制作一个程序来打印一个图案,例如:

n=4

这就是我现在所拥有的:

n = int(input("Please enter a positive integer: "))
line = ""
for currentNum in range(1,n+1):
    line = " " * (n-currentNum) + line + str(currentNum)
    print(line)
我没有得到我希望得到的适当数量的空间。有什么建议吗?谢谢

这就是我正在做的:

    1
       12
         123
          1234
          12345

使用
.rjust
有一种更简单的方法

n = int(input("Please enter a positive integer: "))
line = ''
for current_num in range(1, n+1):
    line += str(current_num)
    print(str(current_num).rjust(n, ' '))
或者作为对尤金答案的补充:

n=int(input());print('\n'.join(''.join(map(str,range(1,i+1))).rjust(n,' ')for i in range(1,n+1)))

问题是每次都要在行中添加空格和数字。您只需要附加数字并使用添加的空格打印。如果您不能使用其他功能,那么类似的功能将起作用:

n = int(input("Please enter a positive integer: "))
line = ""
for currentNum in range(1,n+1):
    line += str(currentNum)
    spaced_line = ' '*(n-currentNum) + line
    print(spaced_line)

尽量避免连接以实现有效的内存管理

这是因为在开始迭代之前,您需要知道最终数字的最大长度,然后从每个值的最大长度中减去一个空格,但是“*(n-currentNum)会注意到这一点吗?currentNum从1开始,如果n是4,那么第1I行应该有3个空格,我将对此进行研究,但到目前为止,我不允许在类中使用这种语法
for i in range(1, n+1):
    print(" "*(n-i) + "".join(map(str, range(1, i+1))))
n = int(input("Please enter a positive integer: "))
line = ""
for currentNum in range(1,n+1):
    line += str(currentNum)
    spaced_line = ' '*(n-currentNum) + line
    print(spaced_line)
for i in range(0,n+1):
    print(f"{' '*(n - i)}{''.join([str(x) for x in list(range(1,i+1))])}")