【问题标题】:Series Summation using for loop in python在python中使用for循环的系列求和
【发布时间】:2018-09-13 11:16:39
【问题描述】:

让我们假设这个系列

1+2+3+....+n

c 中使用 for 循环 我们可以轻松做到这一点

for(i=1;i<=n;i++)
{
    sum += i;
}

python 中,我可以使用 while 循环

做到这一点
while(num <= n):

      sum += num
      num = num+1

但我无法使用 python for 循环来做到这一点

【问题讨论】:

  • sum(range(1,n+1))
  • 请给我完整的for循环语法
  • 这是您所询问问题的完整语法。这不是 C。
  • 对不起,我没看懂,让我试试,谢谢
  • 用python你可以用简单的方式做事,很多时候我们称之为pythonic形式。

标签: python python-3.x for-loop


【解决方案1】:

Python 语法与 c 有点不同。特别是,我们通常使用 range 函数来创建迭代器变量的值(这就是 Stephen Rauch 的评论中的内容)。 range 的第一个参数是起始值,第二个是最终值(不包含),第三个值是步长(默认为 1)。如果您只提供一个值(例如range(5)),则起始值为 0,提供的值为结束值(相当于range(0, 5))。

这样你就可以了

for i in range(1, n + 1):

创建一个 for 循环,其中 i 采用与 c 循环中相同的值。您的代码的完整版本可能是:

summation = 0
for i in range(1, n + 1):
    summation += i # shorthand for summation = summation + i

但是,由于求和如此普遍,因此有一个内置函数 sum 可以为您执行此操作,无需循环。您只需将它传递给一个可迭代对象(例如,一个列表、一个元组……),它就会返回所有项目的总和。因此上面的 for 循环等价于更短的

summation = sum(range(1, n + 1))

请注意,因为sum 是内置函数的名称,所以不应将其用作变量名;这就是我在这里改用summation 的原因。

因为您可能会发现这在 Python 中很有用,所以您可以直接循环遍历可迭代对象的元素也很好。例如,如果我有一个姓名列表并想为每个人打印一个问候语,我可以使用“传统”方式来执行此操作:

names = ["Samuel", "Rachel"]
for i in range(len(names)):  # len returns the length of the list
    print("Hello", names[i])

或者以更简洁的“Pythonic”方式:

for name in names:
    print("Hello", name)

【讨论】:

    【解决方案2】:

    对于一个系列,建立您的列表,然后将它们全部添加为

    n = 10
    sum(range(n+1))
    

    55


    对于 1/n,我们有

    n = 5
    sum([1/i for i in range(1,n+1)])
    

    2.28333


    对于 1/n^2 我们有

    n = 5
    sum([1/i**2 for i in range(1,n+1)])
    

    1.463611

    【讨论】:

      【解决方案3】:

      这行得通:

      def summation(num): 
          sumX = 0
          for i in range(1, num + 1):
              sumX = sumX + i
          return sumX
      
      summation(3)  # You place the num you need here
      

      还有这个:

      def summation(num):
          return sum(range(1, num+1))
      

      【讨论】:

        猜你喜欢
        • 2018-12-03
        • 2019-05-06
        • 1970-01-01
        • 2018-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多