在python中创建数字模式

2024-09-28 01:58:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试创建两个类似类型的模式(在python中):

  1
 2 2
3 3 3

以及

  1
 2 3
4 5 6

不超过用户指定的长度

我写了一个代码来打印第1种图案:

    def rec1():
        for i in range(0,n,1):
           count=i
           print(" "*(n-i) + str(i+1) + " ",end=" ")
           if count!=0:
               rec2(i+1)
           else:
               print("\n")

    def rec2(x):
        print(str(x) + " ",end=" ")
        count=count-1
        if count>0:
            rec2(x)
        else:
            print("\n")
        return

    count=0
    n=int(input("Number?"))
    rec1()

但是我得到了以下错误:

^{pr2}$

有谁能提供更有效的代码吗?在


Tags: 代码用户类型forifdefcount模式
2条回答

试试这个:

def rec1(n):
  for i in range(1,n+1,1):
    s = ""
    s += (" "*(n-i))
    for j in range(0,i,1):
        s += (str(i) + " ")
    print(s)

n=int(input("Number?"))
rec1(n)

你不需要rec2

以下是生成第一和第二模式的另一种方法:

def generate(n, flag = 0):
    """ n: number; 0 is 1st pattern; 1 is 2nd pattern """

    g = [range(1,n+2)[i*(i+1)/2:i*(i+1)/2 +i+1] for i in range((n+2)/2-1)] if flag else \
    [ (i,)*i for i in range(1, n+1)]
    return [' '* range(1,len(g)+1)[::-1][i] + ' '.join([str(j) for j in g[i]]) for i in range(len(g))]

for t in generate(6, 0): print t  # 1st pattern
for t in generate(6, 1): print t  # 2nd pattern

输出:

^{pr2}$

相关问题 更多 >

    热门问题