在python中使用while循环的奇数之和

时间:2017-08-30 11:17:00

标签: python

我是编程新手,并被要求使用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)

我可能知道我的错吗?任何帮助将不胜感激

5 个答案:

答案 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