python循环中断_Python中断多重循环的几种思路

I. 跳出单循环

不管是什么编程语言,都有可能会有跳出循环的需求,比如枚举时,找到一个满足条件的数就终止。跳出单循环是很简单的,比如

for i in range(10):

if i > 5:

print i

break

然而,我们有时候会需要跳出多重循环,而break只能够跳出一层循环,比如

for i in range(10):

for j in range(10):

if i+j > 5:

print i,j

break

这样的代码并非说找到一组i+j > 5就停止,而是连续找到10组,因为break只跳出了for j in range(10)这一重循环。那么,怎么才能跳出多重呢?在此记录备忘一下。

II. 跳出多重循环

事实上,Python的标准语法是不支持跳出多重循环的,所以只能利用一些技巧,大概的思路有:写成函数、利用笛卡尔积、利用调试。

当然最常用的思路是使用变量标记法

def f():

flag = 0

for i in range(10):

for j in range(i):

if i+j>5:

print i,j

flag = 1

break

if flag == 1:

break

if __name__ == "__main__":

f()

写成函数

在Python中,函数运行到return这一句就会停止,因此可以利用这一特性,将功能写成函数,终止多重循环,例如

def work():

for i in range(10):

for j in range(10):

if i+j > 5:

return i,j

print work()

利用笛卡尔积

这种方法的思路就是,既然可以跳出单循环,我就将多重循环改写为单循环,这可以利用itertools中的笛卡尔积函数product,例如

from itertools import product

for i,j in product(range(10), range(10)):

if i+j > 5:

print i,j

break

利用调试模式

笛卡尔积的方式很巧妙,也很简洁,但它只能用于每次循环的集合都是独立的情形,假如每层循环都与前一层紧密相关,就不能用这种技巧了。这时候可以用第一种方法,将它写成函数,另外,还可以利用调试模式。这个利用了调试模式中,只要出现报错就退出的原理,它伪装了一个错误出来。

class Found(Exception):

pass

try:

for i in range(10):

for j in range(i): #第二重循环跟第一重有关

if i + j > 5:

raise Found

except Found:

print i, j

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 中有多种方式可以中断循环程序,下面分别进行介绍: ### 使用 break 关键字 可以在循环体中使用 `break` 关键字来中断循环。当 `break` 关键字被执行时,程序会跳出循环并继续执行循环语句后的代码。下面是一个示例: ```python for i in range(10): if i == 5: break print(i) ``` 输出结果为: ``` 0 1 2 3 4 ``` 当 `i` 的值等于 5 时,循环中断,程序跳出循环并继续执行后续的代码。 ### 使用 continue 关键字 可以在循环体中使用 `continue` 关键字来跳过当前循环并执行下一次循环。下面是一个示例: ```python for i in range(10): if i == 5: continue print(i) ``` 输出结果为: ``` 0 1 2 3 4 6 7 8 9 ``` 当 `i` 的值等于 5 时,循环被跳过,程序执行下一次循环。 ### 使用 return 关键字 如果循环是在函数内部定义的,可以在循环体中使用 `return` 关键字来中断循环并返回函数的值。下面是一个示例: ```python def my_function(): for i in range(10): if i == 5: return i return None result = my_function() print(result) ``` 输出结果为: ``` 5 ``` 当 `i` 的值等于 5 时,循环中断,函数返回 `i` 的值。 ### 定时中断循环执行某一段程序 如果想要在循环执行一段时间后中断并执行某一段程序,可以使用 Python 内置的 `time` 模块中的 `sleep()` 方法来实现。下面是一个示例: ```python import time for i in range(10): if i == 5: time.sleep(5) # 等待5秒钟 print("程序已经执行了5秒钟") print(i) ``` 输出结果为: ``` 0 1 2 3 4 程序已经执行了5秒钟 5 6 7 8 9 ``` 当 `i` 的值等于 5 时,程序等待 5 秒钟后执行 `print("程序已经执行了5秒钟")` 语句,然后继续执行循环语句。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值