如何使用 python 中的用户输入创建数字三角形?

How to create a numeric triangle with user input in python?

我必须回答这个问题:编写一个 Python 函数 triangle(n),它接受一个整数参数 n 并打印一个 n 层的数字三角形,如以下示例所示。测试你的答案参数:1、2、5、9 和 14。

 triangle(7)
 1
 12
 123
 1234
 12345
 123456
 1234567

 triangle(14)
 1
 12
 123
 1234
 12345
 123456
 1234567
 12345678
 123456789
 1234567890
 12345678901
 123456789012
 1234567890123
 12345678901234

除了使用列表,我不知道该怎么做。

def triangle(n):
    line = [1]
    count = 2
    print(line)
    for i in range(1,n):
        line.append(count)
        count += 1
        print(line)
        if len(line) == 9:
            line.append(0)
            print(line)
            count = 1
triangle(5)
[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]

但是列表是这样打印的。我很难使用 0 并让它重新开始倒数到 123 等

一种可能,可能是最简单的:

  1. 一个一个打印数字并使用print <value>,(注意逗号)以避免在每个print之后换行。最后,不带参数的 print 将只产生一个换行符。

    这样,您甚至不必建立序列。

    print为函数时,语法为print(<value>,end='')print(''),对应。

  2. 要循环数字,使用模运算(%)

虽然可以有更优雅的代码:

def tri(n):
    start = 1
    while (n >= start):
        foo = ""
        for i in range(1, start+1):
            foo += str(i%10)
        print foo
        start += 1

几乎是一行:

>>> import string
>>> def number_triangle(n):
...   print u''.join(string.digits[(i+1) % 10] for i in range(n))
... 
>>> for i in range(15):
...   number_triangle(i)
... 

1
12
123
1234
12345
123456
1234567
12345678
123456789
1234567890
12345678901
123456789012
1234567890123
12345678901234

这是我的尝试

def triangle(n):    
    s = ""
    for i in xrange(0,n):
        s +=  "{}".format((i+1)%10)
        print s
triangle(15)

输出:

1
12
123
1234
12345
123456
1234567
12345678
123456789
1234567890
12345678901
123456789012
1234567890123
12345678901234
123456789012345