2013-07-16 24 views
-1

我在挣扎,我知道应该是一个非常简单的循环。我需要添加从0到n的所有数字。最终结果需要是一个正整数,但我知道它是否出现负值,我可以通过绝对值来评估它是否为正值。蟒蛇中的三角数字加上一个范围

ex: n = 5 
    sum = 5 + 4 + 3 + 2 + 1 
    sum = 15 

我有什么到目前为止,这是

def triangular(n): 
    sum_ = 0 
    for i in range(n): 
     sum_-= n 
    return sum_ 

任何帮助将不胜感激。

+2

您还没有表明您的问题或问题是什么。你为什么要做减法而不是加法? – lurker

+2

如果你想计算总和,1.)为什么会期望正整数的和为负? 2.)为什么你有'sum_ - = n'。它不应该是'sum_ + = i'? 3.)有一个“总和”功能,例如总和(范围(5))= 15'。 – wflynny

回答

9

难道不是吗?

def triangular(n): 
    sum_ = 0 
    for i in range(n+1): 
     sum_+= i 
    return sum_ 

这将添加从0到n的所有数字。虽然这可以放在一行:

def triangular(n): 
    return sum(range(n+1)) 
7

从0到N的数字之和是N(N + 1)/ 2。如何:

return n * (n+1)/2 

而不是使用循环?

+0

在现实生活中,这显然是正确的做法,但对于尝试了解如何将英语语言算法转换为Python循环的初学者来说,这并不是很有帮助。 – abarnert

+0

@abarnert对不起,你没有找到我的回复有用。这个问题似乎没有Python循环语法的麻烦,而是增加了数字。正如你所说,这个解决方案可能在“真实”代码中是首选,因为它只需几个操作即可完成目标。 –

+0

“在现实生活中,这显然是正确的做法,但是......”并不意味着它没有帮助;这意味着它是有用的,因为在现实生活中的代码和所有代码中显然是正确的。不要那么防守。 – abarnert

-1

基本上,从我所听到的,你这样做:

sub program 
add 1= 8 
input=87 
define 'triangular nombers' 
main prgaram 
input traongle 5 
define 1/a 
+1

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/16772351) –