我试图创建一个函数,它增加了一个数字的范围,包括数字。
所以当我输入5时,我应该收到15。
为什么这个功能不起作用?
def sum_nums(number):
start = 0
for index in range(0,len(number)):
start += index
return start
print sum_nums(5)
答案 0 :(得分:2)
如果有人没有提到sum(range(n))
总是n*(n-1)/2
,那么这个问题就不错了。如果您希望这样做包含值n
,则表达式为sum(range(n+1))
和n*(n+1)/2
。
答案 1 :(得分:1)
使用内置'reduce'的python,如下所示。当你从1开始并迭代到6时,也可以实现你想要的。
reduce(lambda x, y: x+y, range(1, 6))
答案 2 :(得分: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
答案 3 :(得分: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)
包含目标号码的原因。
希望这会有所帮助:)