奇数总和代码问题

时间:2016-08-26 16:58:07

标签: python

我知道还有其他帖子,我已经提到了他们,但我似乎无法想出这个。

此代码的值为2500,仅为2500。

sum = 0;
for i in range (1,100):
    if i % 2 == 1:
        sum = sum + i;
print (sum)

但是我希望范围变化。所以我提出了这个

def odd_sum_n(n):
    sum = 0;
    for i in range(1,2*n):
        if i % 2 != 0:
            sum = sum + i;
    print (sum)

print(odd_sum_n(5))

但是这段代码给了我解决方案

25
None

我一直在尝试调整此代码,但我不明白为什么"无"出现。我是python的新手,所以任何帮助都会受到赞赏!

4 个答案:

答案 0 :(得分:7)

Python认为返回代码为None,用于不返回任何内容的函数

你实际上必须返回总和而不是打印你的功能

def odd_sum_n(n):
    sum = 0;
    for i in range(1,2*n):
        if i % 2 != 0:
            sum += i;
    return (sum)

print(odd_sum_n(5))

BTW我建议避免使用sum,因为它是预定义的函数......

注意:另一种解决方案,我们使用预先定义sum

的地方更短
def odd_sum_n(n):
    return sum(range(1,2*n,2))

print(odd_sum_n(5))

笑声:对于这个特殊问题,hjpotter92评论甚至更好

def odd_sum_n(n):
    return n*n

另一个经典系列:从1到n =>的所有整数之和sum(range(n))n*(n+1)//2

答案 1 :(得分:1)

您希望从def odd_sum_n(n)获取return(sum)所需的值print(odd_sum_n(n)),然后只需none,这样只打印您的答案。  您收到def,因为您试图在function中一次打印两次,而在您自己调用none时则打印一次。希望这可以帮助您获得结果customapp-dev.yml的原因。

答案 2 :(得分:0)

您没有从odd_sum(n)函数返回任何值,这就是它打印无的原因。

答案 3 :(得分:0)

此计划说明了为什么会打印2500

def print2500():
  print(2500)

print2500()

这就是为什么你要打印None

def doNotReturnAnything():
  n = 2500

print(doNotReturnAnything())

将两者结合起来,你会得到与开场问题完全相同的结果:

def print2500():
  print(2500)

print(print2500())

最后,正确的方法是让函数返回一个值。

def return2500():
  return 2500

print(return2500())

亲自试试吧!