编写函数以在python 2.7

时间:2015-07-14 08:02:07

标签: python python-2.7

我无法通过搜索找到答案,而且我已经在这方面工作了两天而且很难过。我想我只是对数学感到困惑。我正在尝试编写一个找到前n个三角形数字的函数。

def formula(n):
    i = 1
    while i <= n:
        print i, '\t', n * (n + 1)/ 2
        i += 1
    print

因此,例如,如果我输入公式(5),它将如下所示:

 1       1
 2       3
 3       6
 4       10
 5       15

我知道如何制作一张表从1到我选择的任何数字n ..但是我无法弄清楚如何使第二部分等于我输入的公式n *(n + 1)/ 2。通过这个的逻辑是什么?每次我输入公式(5)时,例如循环从1-5开始,但在右手栏中一直返回相同的确切答案,这将是15。我无法在它开始的地方进行在右手边的1,3,6等处。

3 个答案:

答案 0 :(得分:1)

观察到您正在计算n * (n + 1) / 2而不是i * (i + 1) / 2的评论是正确的。您还可以通过观察第i个三角形数字只是从1到i的整数之和来摆脱必须在每一步进行乘法和除法,因此在每一步中您只需将i添加到上一步三角数。代码如下:

def formula(n):
    ith_sum = 0
    for i in xrange(1, n+1):
        ith_sum += i
        print i, '\t', ith_sum

答案 1 :(得分:0)

我完全忘记了三角形数字,谢谢你的问题!我很高兴您现在知道正确的解决方案。我很好奇是否可以采用不同的方式:

def triangular(number):
    return number + triangular(number-1) if number else 0

print triangular(5)

如果您喜欢挑战,可以尝试解决这个问题。这里和那里的打印声明将帮助您发现正在发生的事情。

答案 2 :(得分:0)

这是一个对我有用的简单解决方案

 def print_triangular_numbers(n):
    for i in range(n+1):
        print(i, int(i * (i + 1)/ 2))
       
print_triangular_numbers(5)