1

我需要创建一个提供解决方案的程序:

1
3 2
6 5 4
10 9 8 7

使用蟒蛇。

三个多星期以来,我一直在尝试不同的想法,但我找不到解决方案。我被允许使用的所有代码功能/命令已在以下尝试中使用。

各种尝试包括:

第一段代码显示了一些承诺,但它不断在 x 列表中获取重复项。

    #Attempt 1
    n=4
    l = [0, 1, 2, 3, 4]
    x = [0]
    for i in range (0, n+1):
        k = 0
        j = i
        while k <= i and j != x[j-1]:
            j += l[k]
            print (j, end = " ")
            x.append(j)
            while j != i and j != x[j-1]:
                j -= 1
                if j > i:
                    print (j, end = " ")
                    x.append(j)
            print (x)
            k+=1

    #Attempt 2
    n = 4 
    print (1)
    for a in range (2, n):
        for i in range (2, n*2, a):
            j = i 
            j+=i-1
            print (j, end =" ")
            while j>i:
                j-=1
                print (j, end= " ")
            print ()

    #Attempt 3
    n = 4
    l = [1, 2, 3, 4]
    for i in range (0, n):
        for j in range (0, n*3, l[i]):
            while j >= i:
                print (j, end = " ")
                j-=1
            print ()

输出应该是

1
3 2
6 5 4
10 9 8 7

以某种形式,但我从来没有得到它。

4

3 回答 3

3

如果您只是想获得特定的输出,只知道 的值n,那么您可以这样做:

n = 8

numbers = range(1, n * (n + 1) // 2 + 1)

for i in range(1, n + 1):
    head, numbers = numbers[:i], numbers[i:]
    print(*reversed(head))

输出

> python3 test.py
1
3 2
6 5 4
10 9 8 7
15 14 13 12 11
21 20 19 18 17 16
28 27 26 25 24 23 22
36 35 34 33 32 31 30 29
> 

或者还有更多我没有得到的问题?

于 2019-07-19T05:42:59.903 回答
1

cdlane 给出的答案更加pythonic。这是简化(学校项目)版本。

n = 4

for i in range(1, n+1):
  max_num_in_line = i * (i+1)// 2  # this gives max number to be printed in line i
  for j in range(i): # here i is the total numbers to be printed in a line.
    print(max_num_in_line, end=' ')
    max_num_in_line -= 1
  print()
于 2019-07-19T05:59:27.480 回答
0

如果您不想要重复的值,您应该使用而set()不是变量。list()x

于 2019-07-19T05:33:32.717 回答