从Python中的数字打印形状

时间:2018-11-06 23:52:18

标签: python computer-science

我正在尝试使用循环创建一个名为shape的函数,该函数可以打印n行和n*2列的形状。

例如:

shape(5)打印以下内容:

enter image description here

我已经尝试做很多事情,但是还没有成功。到目前为止,我可以提供以下代码。

def shape(n):
    tri = ""
    for i in range (1, n+1):
        tri = tri + (str(i))
        print(tri)
        i += 1  

产生:

1
12
123
1234
12345

任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:1)

5........5
54......45
543....345
5432..2345
5432112345

结果:

{{1}}

答案 1 :(得分:1)

PackageC

或:

def shape(n):
    for r in range(n):
        s = ''
        for i in range(n):
            s += str(n - i) if i <= r else '.'
        print(s, s[::-1], sep='')

或者,不使用反转片:

def shape(n):
    s = ''
    for i in range(n, 0, -1):
        s += str(i)
        print(s + '.' * (i - 1) * 2 + s[::-1])

这样:

def shape(n):
    s = r = ''
    for i in range(n, 0, -1):
        s += str(i)
        r = str(i) + r
        print(s + '.' * (i - 1) * 2 + r)

输出:

shape(5)

答案 2 :(得分:1)

以下是替代方法:

def shape(n):
    prefix = ''
    total = (2 * n)
    for i in range(n, 0, -1):
        prefix += str(i)
        suffix = ''.join(reversed(prefix))
        dots = '.' * (total - (len(prefix) + len(suffix)))
        print(prefix + dots + suffix)

shape(5)

输出

5........5
54......45
543....345
5432..2345
5432112345

答案 3 :(得分:0)

使用常规的for循环打印。虽然可以像其他所有人一样使用其他方法来完成。

rows = int(input())

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

输入= 5,输出:

5........5
54......45
543....345
5432..2345
5432112345

答案 4 :(得分:0)

def shape(n):
    n= 5
    tri = ['.'] * (2*n)  
    for i in range(0,n):
        tri[i]=str(n-i)
        tri[2*n-i-1]=str(n-i)
        print(*tri, sep='')

5........5
54......45
543....345
5432..2345
5432112345