我是编程新手,并被要求使用while循环将奇数从1加到(2 * n)-1。 这是我的尝试:
def sum_odd_n(n):
while n<2*n:
sum = 0
if n%2==1:
sum = sum+n
return (sum)
我可能知道我的错吗?任何帮助将不胜感激
答案 0 :(得分:3)
条件while n<2*n:
在n >= 0
时始终为真,您将拥有无限循环。请尝试以下
def sum_odd(n):
value = 1
total = 0
while value < (2*n) - 1:
if value % 2 == 1:
total += value
value += 1
return total
>>> sum_odd(25)
576
为了完整性,处理此问题的更多pythonic方法是将sum
与生成器表达式一起使用
def sum_odd(n):
return sum(i for i in range(1, 2*n -1) if i%2 == 1)
答案 1 :(得分:1)
第一个提示是在while循环中查看你的情况:
while n < 2*n
请注意,这始终是真的,因为如果n>0
,那么2*n
总是更大。如果您需要更多帮助,请写下评论;)
更新:我会告诉你出了什么问题,所以如果你想先自己试一试,请停止阅读。所以基本上你需要另一个变量,让我们说i
将遍历整数。然后你可以做这样的事情:
def sum_odd_n(n):
i = n
sum = 0
while i < 2*n:
if i % 2 == 1:
sum += i
i += 1
print sum # for python3: print(sum)
答案 2 :(得分:0)
<div class="outerdiv">
<div class="innerdiv">
Testing
</div>
</div>
答案 3 :(得分:0)
我会试着指出你所犯的错误,并尝试提供更正。
def sum_odd_n(n):
sum = 0 # sum is initialized here, so that it doesn't reset inside the loop
iterator = 0
while iterator<2*n
if iterator%2==1:
sum = sum+iterator # or sum += iterator
iterator = iterator + 1 # otherwise this will be an infinite loop, as iterator will always be 0.
return sum
这是我认为应该起作用的。
{{1}}
希望这适合你。 : - )
答案 4 :(得分:0)
这对我有用:
def sum_odd(n: int):
total = 0
for x in range(2*n):
if x%2==1:
total += x
return total