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

时间:2015-02-04 18:13:57

标签: python numeric

我必须回答这个问题:编写一个Python函数三角形(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等等。

4 个答案:

答案 0 :(得分:1)

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

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

    这样,你甚至不必建立一个序列。

    print是函数时,语法相应地为print(<value>,end='')print('')

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

几乎是一个单行:

>>> 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

答案 3 :(得分:0)

这是我的尝试

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