(0)引言
课程链接:
20天,基础入门-数据分析-机器学习(全套) 魔鬼训练营,快速上手必备_哔哩哔哩_bilibili
# 本节覆盖的课程内容:
06_流程控制
07_流程控制巩固01
08_流程控制巩固02
(1)流程控制
# (1)流程控制这里,简单理解就是条件判断语句、循环语句等。【只做复习,不做过多介绍】
1)if语句(其实没什么说的,学过C语言都知道,这里只给出python的格式就行)。那么if语句,可以分为三种类型,单分支语句(就是一个if的情况)、双分支语句、多分枝语句。
双分支语句:
多分支语句:
#(2) 循环控制
1)while语句。如果想要直接跳出循环,可以使用break语句,后面给出代码。这里不赘述,因此对于代码也是随便写的,保证基本展示功能即可。【break可以在for语句和while语句种使用,并且break只会跳出离他最近的一层循环,也就是说对于多层嵌套的循环,break只会结束一层的循环,不影响其他层(其他层为外层,如果是内层自然也一并结束了)。】
2)for循环语句。具体的话如下图以及后面的代码图示。这里提及str()转换,和int()转换一样,前者是转化为字符串,后者是转为整型数据。都是类型转换【是不是强制类型转换?】。
for语句的进阶应用
else从句:其实就是循环正常结束才会产生作用(也就是没有中断语句的正常结束)。如果循环遇到了break中断,那么else语句是不会执行的,这里很简单,while也有else从句。
3)两种循环语句的选择【需要编写更多的代码来体会】。循环中断的语句有break和continue两种,前者在while语句时有介绍(并且有下图详细介绍),后者是中止此次循环,但是不会结束循环。
# (3)综合应用案例
【很简单】
(2)流程控制巩固01 / 02
# (1)排序算法。【实践作业】
1)冒泡排序的实现。思想:小的浮起来,大的沉下去。实现起来也很简单,就是前后比较,小的往前走。要重复多遍,才能变为有序序列。【看看天勤就好,然后代码作为作业写写吧。】
2)选择排序的实现。思想:在无序序列 A 中,我们选择出最小的一个元素,把该元素与序列 A 的第一个元素交换位置, 从而最小元素自己成为有序序列 B ,无序序列 A 长度减一 ,重复上述步骤就能够把序列变为有序序列了。
3)插入排序算法的实现。思想:假设无序序列 [49,38,65,76,13,21,49'] 那么对于该序列(为区分49,所以多的49我们给一个记号 即49‘),我们首先要做的是取出第一个关键字 49 作为有序序列,即如下:
第一趟:49 [38,65,76,13,21,49'],然后逐个插入 49 的序列(要和49进行比较),即 38 , 49。
第二趟:38,49 [65,76,13,21,49'],把65 插入有序序列,即38,49,65。
第三趟:38,49,65 [76,13,21,49'],把76插入有序序列,即 38,49,65,76。
第四趟:38,49,65,76 [ 13,21,49' ] ,把13 插入有序序列,进行逐元素比较发现13最小,则有序序列 13,38,49,65,76。
第五趟:13,38,49,65,76 [ 21,49' ],把21插入有序序列,进行逐元素比较,即13,21,38,49,65,76。
第六趟:13,21,38,49,65,76 [ 49' ],把49'插入有序序列,我们发现49 = 49’,因此最终的有序序列:[ 13,21,38,49,49',65,76 ]。可以看到 49 还是在 49' 的前面,因此直接插入排序是稳定的排序算法。
# (2)查找算法。【实践作业】
1)折半查找(二分查找)。首先折半查找要求序列本身是有序的。那么为了更好讲述,这里假设有序序列: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ]。折半查找的思想就是建立一个折半查找判定树(二叉树)。以下是构造过程。【实际上就是对于一个序列,我们把最前面的元素位置作为 low ,最后的元素作为 high,判定树的根节点的计算为 (low + high) /2 的向下取整,构造过程可以直接手写了】