我知道还有其他帖子,我已经提到了他们,但我似乎无法想出这个。
此代码的值为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的新手,所以任何帮助都会受到赞赏!
答案 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())
亲自试试吧!