我如何编写一个迭代函数来计算前n个奇数之和,并使用for循环返回1 + 3 + .... +(2n-1)?

时间:2018-09-01 15:22:51

标签: python

假设n是一个正整数

这是我的代码:

def sum_odd_n(n):
    x =1
    for x in range(n):
        if x%2==1:
            continue
        return x + 2

但是当我在Python上运行它时,它会给我答案2。您能告诉我什么地方出了问题以及我应该怎么做才能解决这个问题?

4 个答案:

答案 0 :(得分:1)

由于您要查找第一个'n'个奇数的和,因此建议您使用step = 2的范围函数。我会详细说明:

25

这给出的输出为:typedef struct { uint8_t ssid[33];

此处,在范围函数中,第一个属性提供起点,第二个属性提供终点,第三个属性提供序列中每个数字之间的差。 我希望这会有所帮助。

答案 1 :(得分:0)

您的代码有一些问题。

  • 首先是您在for循环中有一个return语句。
  • 第二,您只需要访问前n个整数并检查其中哪些是奇数。您不会访问所有前n个奇数整数。

列表理解解决方案如下。

def sum_odd_n(n):
    # sum up the first n odd numbers
    return sum([2*i + 1 for i in range(n)])

答案 2 :(得分:0)

如果您有兴趣,这个特定问题也可以提供更快的解决方案。一组均匀分布的数的平均值只是最小数加上最大数除以2(在这种情况下,是(1+(2n-1))/ 2/2,或者只是n)。由于您要添加n个平均值为n的数字,因此以下函数将提供您要查找的输出。

def sum_odd_n(n):
    return n**2

如果从技术上讲,您需要它作为满足某些家庭作业约束的迭代解决方案,则可以始终将较快的解决方案包装在循环中,并依赖于您想退出循环的数字的返回:

def sum_odd_n(n):
    while True:
        return n**2

答案 3 :(得分:-1)

检查此程序是否可以运行:

a=int(input("how many first odd number sum you want"))

x=1

i=0

def OddSum():

      global i
      global x
      while i<=a:
            x+=2
            i+=1
      print(x)
OddSum()