【问题标题】:From for loop to while loop从 for 循环到 while 循环
【发布时间】:2017-12-03 17:58:59
【问题描述】:

我正在尝试将其转换为 while 循环。

def function(n, step):
    s = 0
    for i in range(1, n, step):
        s += i
    return s

有什么想法吗?

def function(n, step):
    s = 0
    i = 1
    while i<n:

所以我不知道之后该怎么办。

编辑:所以解决方案是

def function(n, step):
s = 0
i = 1
while(i<n):
    s += i
    i += step 
return s

【问题讨论】:

  • 我知道你能做到,试试吧!想一想,在 for 循环的每次迭代中增加的两件事是什么?现在也将它们添加到 while 中!

标签: python for-loop while-loop


【解决方案1】:

range(a, b, c) 返回一个从a 开始的可迭代对象,并且它的每一步都增加c,直到达到b,排除在外。所以你要找的东西看起来像这样:

def function(n, step):
    s = 0
    i = 1
    while i < n:
        s += i
        i += step
    return s

不过,这并不是你真正应该这样做的方式,除非它是 python 练习的一部分。更好的方法是:

def function(n, step):
    return sum(range(1, n, step))

sum() 是 Python 的内置函数之一

【讨论】:

    【解决方案2】:

    您应该将初始值设为1,并在每个循环中逐步递增该值

    def function(n, step):
        s = 0
        i = 1
        while(i<n):
            s += i
            i += step 
        return s
    

    【讨论】:

      【解决方案3】:

      这里的很多答案都是正确的,只是它们将索引设置为 1。range() 函数是基于 0 索引的,所以我应该从 0 开始。您可以使用以下示例代码检查差异:

      n = 40
      step = 3
      
      def function(n, step):
          s = 0
          for i in range(s, n, step):
              s += i
          return s
      
      def function2(n, step):
          s = 0
          i = 0
          while(i < n):
              s += i
              i += step
          return s
      
      def function3(n, step):
          s = 0
          i = 1
          while(i < n):
              s += i
              i += step
          return s
      
      print("Range function: %s" % function(n, step))
      print("While loop, i=0: %s" % function2(n, step))
      print("While loop i=1: %s" % function3(n, step))
      

      这是这些值的输出

      Range function: 273
      While loop, i=0: 273
      While loop i=1: 247
      

      【讨论】:

      • 这个文档可能比我能更好地解释它:pythoncentral.io/pythons-range-function-explained 特别是本节:range()(和一般的 Python)是基于 0 索引的,这意味着列表索引从 0 开始,而不是 1。例如。访问列表第一个元素的语法是 mylist[0]。因此 range() 生成的最后一个整数直到但不包括停止。例如 range(0, 5) 生成从 0 到但不包括 5 的整数。
      【解决方案4】:

      您可以完全按照 for 循环中的内容执行此操作,并使用 1 条附加语句来增加 while 循环主体中 i 的值

      def funt(n, step):
          s = 0
          i = 1
          while i < n:
              s+=i
              i+=1
          return s
      

      【讨论】:

      • @Kaana 对于大多数数据类型,x += y 等价于x = x + y
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      • 2012-09-19
      • 1970-01-01
      • 2014-08-21
      • 2018-11-05
      • 1970-01-01
      • 2019-11-10
      相关资源
      最近更新 更多