我怎样才能转过这个'而#39;循环进入' for'环?

时间:2015-11-16 19:00:43

标签: python

我正在通过LPTHW,练习33,以及在最后一次学习练习中,他们要求将我所拥有的代码更改为' for'循环,而不是' while'循环我写的。以下是我提出的代码:

numbers = []

def loop(i, x, new_num):
    while i < x:
        print "At the top i is %d" % i
        numbers.append(i)

        i = i + new_num
        print "Numbers now: ", numbers
        print "At the bottom i is %d" % i


    print "The numbers: "

    for num in numbers:
        print num

loop(0, 10, 6)

现在,学习练习指示我,&#34;现在,将其编写为使用for循环和范围。你需要增量器吗? 中间了?如果你没有摆脱它会发生什么?&#34;

这是我能够走得多远,但我不知道自己是否朝着正确的方向前进。基本上只是在黑暗中拍摄:

numbers = []
new_numbers = [0]
def loop2():
    for i in new_numbers: 
        print "At the top i is %d" % i
        numbers.append(i)

我不知道在哪里插入&#39;范围&#39;功能要么。如果我设法将其转变为&#39; for&#39;循环确实完成了这个&#39; while&#39;循环代码呢,它会是什么样子?

2 个答案:

答案 0 :(得分:0)

在使用while循环的工作示例中,您在每个循环中分配i = i + new_num,因此您按i迭代new_num。这可以使用range轻松复制。

range最多需要3个参数:(starting_point, upper_bound, num_to_iterate_by)

在您的代码中,i是起点,x是上限,new_num是每个循环迭代的数字。

注意: for循环中的第三个参数是可选的。如果没有指定,Python将使用1作为默认迭代器。

您的代码更改

  1. 在第4行用while i < x:替换for i in range(i, x, new_num):
  2. 第8行删除i = i + new_num
  3. -

    numbers = []
    
    def loop(i, x, new_num):
        for i in range(i, x, new_num):
            print "At the top i is %d" % i
            numbers.append(i)
    
            print "Numbers now: ", numbers
            print "At the bottom i is %d" % i
    
    
        print "The numbers: "
    
        for num in numbers:
            print num
    
    loop(0, 10, 6)
    

    <强>输出:

    At the top i is 0
    Numbers now:  [0]
    At the bottom i is 0
    At the top i is 6
    Numbers now:  [0, 6]
    At the bottom i is 6
    The numbers: 
    0
    6
    

答案 1 :(得分:-1)

通过在范围内使用for =&gt; for i in range(x,y)

numbers = []

def loop(i, x, new_num):
    for i in range(i, x):
        print "At the top i is %d" % i
        numbers.append(i)

        i = i + new_num
        print "Numbers now: ", numbers
        print "At the bottom i is %d" % i


  print "The numbers: "

  for num in numbers:
    print num

loop(0, 10, 6)