2016-08-15 82 views
0

我试图创建一个函数,将数字的范围相加,包括数字。添加一个范围内的所有数字,包括数字

所以,当我输入5,我应该得到15

为什么不工作这个功能呢?

def sum_nums(number): 
    start = 0 
    for index in range(0,len(number)): 
     start += index 
    return start 

print sum_nums(5) 
+0

尝试用'number'替换'len(number)'。 – Blorgbeard

+0

你为什么要把数字的“len”而不是将它用于'range'? – TigerhawkT3

+1

另外:这段代码应该给你一个错误信息。请始终包含您在问题中遇到的任何错误。 – Blorgbeard

回答

0

这可能与1个衬垫做,但我会帮你出的格式的解决方案,你试图。

def sum_nums(number): 
    total = 0 
    for i in range(number + 1): 
     total += i 
    print total 

输入5

输出15

此外,一些澄清按你的错误消息。 len用于字符串。整数没有长度。通过简单地将它传递给range函数,它将尝试从1到该编号的所有数字(如果您没有指定起始编号),但不包括它。这就是我们为什么要做range(number + 1)以包含目标号码的原因。

希望这有助于:)

+1

工作!谢谢 ! – BeeGee

+0

@BeeGee没问题! – Harrison

+1

你的解释很有意义,再次感谢你! – BeeGee

1

使用像下面那样构建'python'的python。此外,你想要什么就可以实现,当你从1开始,遍历至6

reduce(lambda x, y: x+y, range(1, 6)) 
1

你可以做到这一点的一个班轮:

def sum_range_inclusive(number): 
    return sum(range(number + 1)) 

要打破下来:

# assume number is 5 for now 
number = 5  

# exclusive, doesn't include the number 
range(number) 
# returns [0, 1, 2, 3, 4] 

# inclusive, includes the number 
range(number + 1) 
# returns [0, 1, 2, 3, 4, 5] 

# sum of inclusive range 
sum([0, 1, 2, 3, 4, 5]) 
# returns 15 
+0

不错!没有意识到,你可以'总结'这样的范围! – elethan

+1

是的,范围返回一个'list()'和'sum()'可以对包含列表,元组,集合等的任何可迭代数进行求和。 – Soviut

+0

很有意思,谢谢!除了'range'不会返回一个'list' afaik;至少不是在Python 3中。这就是为什么我在我的答案中添加了'list'调用(我删除了它,因为你的更好);我以前认为这是必要的。 – elethan

2

如果有人没这个问题将是有毛病不要提及sum(range(n))始终是n*(n-1)/2。如果您希望这样做,包括值n,表达式是sum(range(n+1))n*(n+1)/2

相关问题