@[TOC](3.7学堂在线python学习笔记)

# 重要笔记

1. 启发式算法

启发式算法(heuristic algorithm)是相对于最优化算法提出的。一个问题的最优算法求得该问题每个实例的最优解。启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计。现阶段,启发式算法以仿自然体算法为主,主要有蚁群算法、模拟退火法、神经网络等。

2. 现代启发式算法的研究,在理论方面还处于不断发展中,新思想和新方法仍不断出现。分析目前的现状和发展方向,其发展方向有如下几个方面:

(1)整理归纳分散的研究成果,建立统一的算法体系结构。

(2)在现有的数学方法(模式定理、编码策略、马尔可夫链理论、维数分析理论、复制遗传算法理论、二次动力系统理论、傅立叶分析理论、分离函数理论、Walsh函数分析理论)的基础上寻求新的数学工具。

(3)开发新的混合式算法及开展现有算法改进方面的研究。

(4)研究高效并行或分布式优化算法。

3. 好的黑盒测试必须要包含所有已知条件,这样才能够最大可能地发现bug并且及时改正

```py

def union(set1, set2):

"""

set1 and set2 are collections of objects, each of which might be empty.

Each set has no duplicates within itself, but there may be objects that

are in both sets. Objects are assumed to be of the same type.

This function returns one set containing all elements from

both input sets, but with no duplicates.

"""

```

你会对这样的描述,给出什么样的测试集?

- set1 is an empty set; set2 is an empty set  set1 is an empty set;

- set2 is of size greater than or equal to 1

- set1 is of size greater than or equal to 1; set2 is an empty set

- set1 and set2 are both nonempty sets which do not contain any objects in common

-  set1 and set2 are both nonempty sets which contain objects in common

4. Glass-box测试的基本想法

- 执行if语句的所有分支

- 确保所有的except分支都包括好了

- 检查循环是否执行,是否仅用了一次

- 检查while循环是否有出口,和recursive分步执行

5.

一个简单的构造所有测试集的Glass-box测试集

```py

def maxOfThree(a,b,c) :

"""

a, b, and c are numbers

returns: the maximum of a, b, and c

"""

if a > b:

bigger = a

else:

bigger = b

if c > bigger:

bigger = c

return bigger

```

可以看见第一个if分支有两种可能,乘上第二个分支两种可能,就要构造4个不同的测试集,分别执行下面的四个语句测试

```py

maxOfThree(2, -10, 100),

maxOfThree(7, 9, 10),

maxOfThree(6, 1, 5),

maxOfThree(0, 40, 20)

```

6. 构建测试集的意义可能在于,我不用对所有语句都执行逻辑上的推导,只要测试集没有出错,就认为这样的结果可以接受,虽然数学上并不严密,但是对大部分结果却是好的

这样带来的直接好处就是时间上节省了非常多推导的时间

7.

```py

def union(set1, set2):

"""

set1 and set2 are collections of objects, each of which might be empty.

Each set has no duplicates within itself, but there may be objects that

are in both sets. Objects are assumed to be of the same type.

This function returns one set containing all elements from

both input sets, but with no duplicates.

"""

if len(set1) == 0:

return set2

elif set1[0] in set2:

return union(set1[1:], set2)

else:

return set1[0] + union(set1[1:], set2)

```

针对这个好的Glass-box测试集应该测试len(set1)==0情况,set1[0]在set2中情况和set1[0]不在set2中情况,为此还要测试递归深度为0,1以及大于1的情况

可以看到,这样的测试集

```py

union('','abc'),

union('a','abc'),

union('ab','abc'),

union('d','abc')

```

分别测试了递归深度为0,1,2,1的代码

并且满足了上面的三条逻辑分支

8. 对这样的代码,也许可以考虑三个分支:只执行一次循环,不执行循环,执行多次循环

```py

def foo(x, a):

"""

x: a positive integer argument

a: a positive integer argument

returns an integer

"""

count = 0

while x >= a:

count += 1

x = x - a

return count

```

那么相应的测试集可以看成

```py

foo(10, 3), foo(1, 4), foo(10, 6)

```

9. 测试代码小技巧:使用初值假设和结果假设,如果程序前面部分没有写好,猜几个结果赋值上,然后测试后面的代码就好了

10.  养成良好的测试习惯:先测试单个函数,再测试整体,不断交替。而且如果改进了代码,后面要测试前面用过的测试集,来保证我们的更新没有把以前的工作破坏了

python 学堂在线_(3.7学堂在线python学习笔记)相关推荐

  1. python摄像头推流_海康视频实时推流学习笔记

    学习目的是在Python里调取网络摄像头实时显示视频流,方便日后处理. 我最开始的想法是用萤石开发平台下载的sdk自带的demo,在Python里调用C++的程序,但是在运行的过程中返回错误,NET- ...

  2. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  3. 《Python核心编程(第3版)》学习笔记及书评

    <Python核心编程(第3版)>学习笔记 文章目录 <Python核心编程(第3版)>学习笔记 写在前面 1. 正则表达式 1.1 常用语法 1.2 re模块 2. 网络编程 ...

  4. 《Python地理空间分析指南 第2版》学习笔记-5.1 距离测量

    第5章 Python与地理信息系统 本章主要学习Python处理矢量数据,包含以下内容: 距离测量 坐标转换 矢量数据重投影 Shapefile 文件编辑 海量数据过滤 专题地图创建 非GIS数据类型 ...

  5. python 学堂在线_(3.17学堂在线python学习笔记)

    @[TOC](3.17学堂在线python学习笔记) # 重要笔记 ## Assertion和控制流的关系 1. 在python中,抛出异常作为一种检测和控制代码流的重要方式 2. 一个例子帮我们理解 ...

  6. python 技巧视频教程_扣丁学堂Python视频教程之Python开发技巧

    扣丁学堂Python视频教程之Python开发技巧 2018-07-25 14:09:44 808浏览 关于Python开发的技巧小编在上篇文章已经给大家分享过一些,本篇文章扣丁学堂 神秘eval: ...

  7. python代码优化指南_扣丁学堂Python视频教程之Pandas初学者代码优化指南

    扣丁学堂Python视频教程之Pandas初学者代码优化指南 2018-02-05 10:44:24 1320浏览 今天扣丁学堂给大家介绍一下关于Python视频教程之Pandas详解,首先Panda ...

  8. python精通大学_小白21天精通Python是如何做到的?

    题记:大二的时候发现人生苦短,所以信了拍神,开始学Python.学了大半年之后成功转行做前端了.来写个教程帮助大家入门Python. Python零基础入门 零基础入门就得从最基本的变量,语法格式,数 ...

  9. python数据结构题目_《数据结构与算法Python语言描述》习题第二章第三题(python版)...

    ADT Rational: #定义有理数的抽象数据类型 Rational(self, int num, int den) #构造有理数num/den +(self, Rational r2) #求出本 ...

最新文章

  1. 我们为什么要探索人脑的奥秘?
  2. C#如何制作水晶报表简单易懂示例 转
  3. 抖音用户规模达5.18亿,数据解读抖音支付背后逻辑?
  4. 迪杰斯特拉算法 两点间最短路径的选择
  5. 安装Electron
  6. fastjson list转json
  7. 有哪些芯片可以测量交流信号?可以测量哪些参数?
  8. knockout select默认选中
  9. wps启用编辑按钮在哪里_WPS文字打印设置
  10. 计算机网络自顶向下方法华为路由器IPV6到IPV4到IPV6的隧道及实现两端主机通信
  11. 在ADS仿真或者查看S参数的方法
  12. 英语四六级网站服务器繁忙,大学生英语四六级服务至上
  13. 足球foteball英文
  14. 创建邮件服务器(メールサーバー)Radish
  15. 金庸走过,留给马云和阿里巴巴一个“江湖”
  16. 文件下载兼容ie,Firefox,chrome
  17. spring boot oauth2 facebook
  18. python文件内容倒序_python倒序读取文件tail方式
  19. linux最好用的ftp服务器软件,Linux平台下快速搭建FTP服务器
  20. 《商务与经济统计》Python实现笔记(五)

热门文章

  1. vue封装echarts并实现大小动态自适应变化---超有用哇
  2. dynamo怎样由线生成体_Dynamo+Revit在幕墙设计中的应用
  3. 逐个击破!拿下学校核心系统
  4. 【积累】《国产操作系统(麒麟)运维师》课程笔记-第6章-中
  5. C++蓝桥杯 基础练习之杨辉三角形
  6. 魅族MX4处理器曝光:强悍
  7. 数据分析绘图库matplotlib
  8. matlab 进阶绘图:图片保存,极坐标绘图,函数绘图,等高线地图,三维条形图,三维散点图,gif 绘图
  9. Kotlin - 属性代理
  10. 【Cyber RT】Apollo Cyber RT安装