调试
断言assert
格式:assert expression 等价于: if not expression: raise AssertError
logging
导入模块
添加配置
写入的信息的类别
debug,info,warnning,error 如果指定info,debug不再起作用,如果指定wranning,debug,info不起作用
1 | 导入logging模块 |
pdb
1 | 命令 用途 |
单元测试
导入unittest模块
格式:assert expression 等价于: if not expression: raise AssertError
导入模块
添加配置
写入的信息的类别
debug,info,warnning,error 如果指定info,debug不再起作用,如果指定wranning,debug,info不起作用
1 | 导入logging模块 |
1 | 命令 用途 |
导入unittest模块
conda管理环境与vir管理环境
等价于: if not expression: raise AssertError
1 | logging.basicConfig( |
debug,error, info,warning
可以在终端调试代码
概述: 单元测试: 用来对一个函数,一个类或者一个模块来进行一个正确性的校验工作
结果: 1.单元测试通过:说明测试的函数功能正常 2.单元测试不通过:函数有BUG,测试条件输入有误
你玩过“拉灯”游戏吗?
2525 盏灯排成一个 5×55×5 的方形。
每一个灯都有一个开关,游戏者可以改变它的状态。
每一步,游戏者可以改变某一个灯的状态。
游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。
我们用数字 11 表示一盏开着的灯,用数字 00 表示关着的灯。
下面这种状态
1 | 10111 |
在改变了最左上角的灯的状态后将变成:
1 | 01111 |
再改变它正中间的灯后状态将变成:
1 | 01111 |
给定一些游戏的初始状态,编写程序判断游戏者是否可能在 66 步以内使所有的灯都变亮。
第一行输入正整数 n�,代表数据中共有 n� 个待解决的游戏初始状态。
以下若干行数据分为 n� 组,每组数据有 55 行,每行 55 个字符。
每组数据描述了一个游戏的初始状态。
各组数据间用一个空行分隔。
一共输出 n� 行数据,每行有一个小于等于 66 的整数,它表示对于输入数据中对应的游戏状态最少需要几步才能使所有灯变亮。
对于某一个游戏初始状态,若 66 步以内无法使所有灯变亮,则输出 −1−1。
0<n≤5000<�≤500
1 | 3 |
输出样例:
1 | 3 |
本题关键在于如何枚举
每一行灯的情况由上一行决定,上一行的暗灯由下一行的开关点亮,点亮之后就要改变对应的上下左右其他灯
枚举的是第一行开关闭合与否的情况,与灯的亮暗无关,每一个开关有亮和暗两种情况,5个开关就\(2^5 =32\)种情况,当开关的情况定下来后,第一行的灯的亮暗也就确定了,之后几行的灯的亮暗也跟着确定
举例说明
1 | import java.util.Arrays; |
注:
深拷贝与浅拷贝,一个大坑,当时折腾了半天
pytorch框架下的图像增广手段
据说这是每个做Deepfake都必须读的文章