ExpRe[5] python[2] raise语句,条件断点

本文介绍了在Python中使用raise语句进行异常处理,通过异常来跳出多重循环。作者通过一道动态规划问题的解决过程,展示了如何在遇到错误时,利用异常传递信息定位问题。此外,还讨论了在调试过程中设置条件断点的重要性,特别是对于新手来说,如何有效使用VSCode的条件断点功能。文章还提出了用异常跳出循环可能带来的问题及解决方案,并探讨了生成测试数据在算法测试中的挑战和思考。
摘要由CSDN通过智能技术生成


时效性
本篇撰写时间为2021.11.14,由于计算机技术日新月异,博客中所有内容都有时效和版本限制,具体做法不一定总行得通,链接可能改动失效,各种软件的用法可能有修改。但是其中透露的思想往往是值得学习的。
Windows 10家庭中文版,版本20H2,操作系统内部版本19042.1288
本篇前置:

  • ExpRe[4] python[1] 单元测试,算法题对拍
    https://www.cnblogs.com/minor-second/p/15549364.html
  • 大致知道python3中的异常,try机制

从一道动规看raise的常见用法

我们继续做算法设计与分析作业

考虑一个所有元素为正的 n ∗ n n*n nn二维数组(邻接矩阵),已知其中有且仅有一条有向回路使得该回路上各权值乘积大于1,试找出该回路。(特别注意可以自己到自己连边,且这样的边也有可能权重大于1)

其实括号提示是我自己加的。有点坑。

粗略编写算法

我们粗略编写如下类似于Floyd算法的程序

def find_loop(n, mat):
    max_mat = []
    for i in range(n):
        max_mat.append(mat[i].copy())
        for j in range(n):
            max_mat[i][j] = [max_mat[i][j], -1]

    loop_start = 0

    try:
        for k in range(n):
            for i in range(n):
                for j in range(n):
                    if max_mat[i][k][0] * max_mat[k][j][0] > max_mat[i][j][0]:
                        max_mat[i][j][0] = max_mat[i][k][0] * max_mat[k][j][0]
                        max_mat[i][j][1] = k
                    if i==j and max_mat[i][j][0] > 1:
                        loop_start = i
                        raise StopIteration
    except StopIteration
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值