翼度科技»论坛 编程开发 python 查看内容

python中如何在多层循环中使用break/continue

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
关于break/continue这两个关键字在平常的使用过程中一直比较迷糊。好不容易理解了吧,过段时间不使用好像忘记了什么。这个问题也是很多初学者比较容易提及的问题。
先通过一个简单的单层循环来了解一下这两个关键字的使用。
  1. print('=============单层循环使用=============')
  2. for n in range(10):
  3.     if n == 9:
  4.         print('退出当前循环,当前n = ', n)
  5.         break
  6.     elif n == 4:
  7.         print('跳过当前循环,当前n = ', n)
  8.         continue
  9.     print('当前n = ', n)
复制代码
下面是执行以后的结果展示。
  1. # 当前n =  0
  2. # 当前n =  1
  3. # 当前n =  2
  4. # 当前n =  3
  5. # 跳过当前循环,当前n =  4
  6. # 当前n =  5
  7. # 当前n =  6
  8. # 当前n =  7
  9. # 当前n =  8
  10. # 退出当前循环,当前n =  9
复制代码
根据执行完成的结果可以看出,n = 4时,当前的n值没有被打印,但是它还是往下执行了n = 5以后的打印,这就是continue的作用。
而执行到break的关键字时就直接退出for循环了不会往下继续执行。
同样的方式,将单层循环这次变成双层循环看一下效果。
  1. print('=============双层循环使用=============')
  2. for m in range(10):
  3.     for n in range(10):
  4.         if n == 9:
  5.             print('退出当前循环,当前n = ', n)
  6.             break
  7.         elif n == 4:
  8.             print('跳过当前循环,当前n = ', n)
  9.             continue
  10.         print('当前n = ', n)
  11.     if m == 8:
  12.         break
复制代码
下面是执行以后的结果展示。
  1. # 当前n =  0
  2. # 当前n =  1
  3. # 当前n =  2
  4. # 当前n =  3
  5. # 跳过当前循环,当前n =  4
  6. # 当前n =  5
  7. # 当前n =  6
  8. # 当前n =  7
  9. # 当前n =  8
  10. # 退出当前循环,当前n =  9# 当前n =  0
  11. # 当前n =  1
  12. # 当前n =  2
  13. # 当前n =  3
  14. # 跳过当前循环,当前n =  4
  15. # 当前n =  5
  16. # 当前n =  6
  17. # 当前n =  7
  18. # 当前n =  8
  19. # 退出当前循环,当前n =  9# 当前n =  0
  20. # 当前n =  1
  21. # 当前n =  2
  22. # 当前n =  3
  23. # 跳过当前循环,当前n =  4
  24. # 当前n =  5
  25. # 当前n =  6
  26. # 当前n =  7
  27. # 当前n =  8
  28. # 退出当前循环,当前n =  9# 当前n =  0
  29. # 当前n =  1
  30. # 当前n =  2
  31. # 当前n =  3
  32. # 跳过当前循环,当前n =  4
  33. # 当前n =  5
  34. # 当前n =  6
  35. # 当前n =  7
  36. # 当前n =  8
  37. # 退出当前循环,当前n =  9# 当前n =  0
  38. # 当前n =  1
  39. # 当前n =  2
  40. # 当前n =  3
  41. # 跳过当前循环,当前n =  4
  42. # 当前n =  5
  43. # 当前n =  6
  44. # 当前n =  7
  45. # 当前n =  8
  46. # 退出当前循环,当前n =  9# 当前n =  0
  47. # 当前n =  1
  48. # 当前n =  2
  49. # 当前n =  3
  50. # 跳过当前循环,当前n =  4
  51. # 当前n =  5
  52. # 当前n =  6
  53. # 当前n =  7
  54. # 当前n =  8
  55. # 退出当前循环,当前n =  9# 当前n =  0
  56. # 当前n =  1
  57. # 当前n =  2
  58. # 当前n =  3
  59. # 跳过当前循环,当前n =  4
  60. # 当前n =  5
  61. # 当前n =  6
  62. # 当前n =  7
  63. # 当前n =  8
  64. # 退出当前循环,当前n =  9# 当前n =  0
  65. # 当前n =  1
  66. # 当前n =  2
  67. # 当前n =  3
  68. # 跳过当前循环,当前n =  4
  69. # 当前n =  5
  70. # 当前n =  6
  71. # 当前n =  7
  72. # 当前n =  8
  73. # 退出当前循环,当前n =  9# 当前n =  0
  74. # 当前n =  1
  75. # 当前n =  2
  76. # 当前n =  3
  77. # 跳过当前循环,当前n =  4
  78. # 当前n =  5
  79. # 当前n =  6
  80. # 当前n =  7
  81. # 当前n =  8
  82. # 退出当前循环,当前n =  9
复制代码
根据结果,可以观察到内部循环的执行次数是9次,在执行到m = 8 时将循环退出了正好m的值只循环到了0-8正好是9次。
而内部循环的break/continue只对内部循环生效,因此得出了结论break/continue只对它对应的当前循环生效。
那如果是三层循环或者更多的层循环呢,效果也是一样的。
  1. print('=============三层循环使用=============')
  2. #学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
  3. for i in range(3):
  4.     for j in range(3):
  5.         for k in range(3):
  6.             if k in [1, 2, 3]:
  7.                 continue
  8.             print('当前k = ', k)
  9.         if j in [1, 2, 3]:
  10.             continue
  11.         print('当前j = ', j)
  12.     if i in [2, 3]:
  13.         break
  14.     print('当前i = ', i)
复制代码
同样的只需要在其对应的当前循环中加入break/continue的逻辑控制即可。
  1. # =============三层循环使用=============
  2. # 当前k =  0
  3. # 当前j =  0
  4. # 当前k =  0
  5. # 当前k =  0
  6. # 当前i =  0
  7. # 当前k =  0
  8. # 当前j =  0
  9. # 当前k =  0
  10. # 当前k =  0
  11. # 当前i =  1
  12. # 当前k =  0
  13. # 当前j =  0
  14. # 当前k =  0
  15. # 当前k =  0
复制代码
执行完结果以后,i 值对应的循环执行了0、1,j/k值对应的循环只执行了0。所以再一次印证了break/continue只对它自己对应的当前循环生效。

来源:https://www.cnblogs.com/python1111/p/17962509
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具