从for循环到while循环

时间:2017-12-03 17:59:00

标签: python for-loop while-loop

我正在尝试将其转换为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

4 个答案:

答案 0 :(得分:0)

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的内置函数之一

答案 1 :(得分:0)

您应该将初始值设为def function(n, step): s = 0 i = 1 while(i<n): s += i i += step return s 并在每个循环中逐步递增此值

Point point = new Point(x, y)

答案 2 :(得分:0)

这里的很多答案是正确的,除非他们将索引设置为1.范围()函数是基于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

答案 3 :(得分:-2)

您可以使用1个附加语句完成for循环中的操作,以增加i循环

while的值{/ 1}}
def funt(n, step):
    s = 0
    i = 1
    while i < n:
        s+=i
        i+=1
    return s