正确使用'继续'并且'打破'在for循环中

时间:2017-01-30 17:43:52

标签: python for-loop

我试图写一个for循环,它有一个' continue'并且打破了#39;在里面。代码如下

b = 0 
for a in range(1,20):
    if a == 1:
        b =1
        print b
    elif a == 2:
        b = 2
        print b
    elif a == 3:
        b = 3
        print b
    else:
        continue
    a +=1
    print "a = (%d) " % (a)
    if a ==10:
        print "a = (%d) " % (a)
        break

我想做的是循环a并使用a作为确定b值的条件。另外,我不希望a达到20,所以我添加了另一个条件if a == 10来提前结束循环。但是,打印出的结果并不完全符合我的要求:

1
a = (2) 
2
a = (3) 
3
a = (4)

表示

if a ==10:
    print "a = (%d) " % (a)
    break

完全错过了。我不知道我写的哪一行不正确。谢谢!

2 个答案:

答案 0 :(得分:1)

代码的这一部分

if a ==10:
print "a = (%d) " % (a)
break
由于为continue语句指定的条件,

永远不会执行。换句话说,你说当a不等于1,2或3时,循环返回执行,这意味着它将永远不会到达continue语句后的下一行。因此,当a等于10时,它将满足continue语句的条件并返回循环以继续执行。

如果要在等于10时打印出a,则可能不需要continue语句。试试这段代码:

b = 0 
for a in range(1,20):
    if a == 1:
        b =1
        print b
    elif a == 2:
        b = 2
        print b
    elif a == 3:
        b = 3
        print b
    a +=1
    print "a = (%d) " % (a)
    if a == 10:
        print "a = (%d) " % (a)

您可以浏览此资源http://www.tutorialspoint.com/python/python_loop_control.htm以更好地理解python for loop结构

答案 1 :(得分:0)

您编写的错误行是continue语句。 它的作用是停止当前的迭代并带你进入下一个循环迭代。根据你的问题语句,不需要continue语句。尝试删除continue语句,它将运行。 以下是示例代码:

for a in range(1,20):
if a == 1:
    b =1
    print b
elif a == 2:
    b = 2
    print b
elif a == 3:
    b = 3
    print b
else:
    a +=1
    print "a = (%d) " % (a)
    if a ==10:
      print "a = (%d) " % (a)
      break