流程控制

流程控制

一.流程控制相关

1.流程控制理论

流程控制>>>:控制事物的执行流程
事物执行流程总共可以分为三种
1.顺序结构
从上往下依次执行 我们之前所编写的代码都属于该结构
2.分支结构

    分支结构就是根据条件判断的真假去执行不同分支对应的子代码                                 	          事物的执行会根据条件的不同做出不同的执行策略
	3.循环结构
    	事物的执行会根据某个条件出现重复
ps:在代码的世界里 很多时候可能会出现三者混合

提示:作为小白 在学习流程控制的时候 建议做到代码和图形的结合

2.流程控制必备知识

1.python中使用代码的缩进来表示代码的从属关系
从属关系:缩进的代码(子代码)是否执行取决于上面没有缩进的
2.并不是所有的代码都可以拥有缩进的代码(子代码)
if关键字
3.如果有多行子代码属于同一个父代码 那么这些子代码需要保证相同的缩进量
4.python中针对缩进量没有具体的要求 但是推荐使用四个空格(windows中tab键)
5.当某一行代码需要编写子代码的时候 那么这一行代码的结尾肯定需要冒号
6.相同缩进量的代码彼此之间平起平坐 按照顺序结构依次执行

二.if结构

1.分支结构

1).单if分支结构

	if 条件:
        条件成立后才会执行的代码块
 	username = input('username>>>:')
	if username == 'Li':
	     print('你好!') 

image

2).if...else...分支结构

if 条件:
     	条件成立之后执行的子代码
	else:
      	条件不成立执行的子代码
 	 username = input('username>>>:')
    if username == 'Li':
        print('你好!')
    else:
        print('拜拜!')

image

3).if...elif...else分支结构

if 条件1:
       条件1成立之后执行的子代码
 	elif 条件2:
       条件1不成立 条件2成立执行的子代码
  	elif 条件3:
       条件1和2都不成立 条件3成立执行的子代码
   	else:
       上述条件都不成立 执行的子代码
 	ps:中间的elif可以写多个、上述子代码永远只会走一个
 	 score = input('请输入学生成绩>>>:')
    score = int(score)  # 将字符串的整数转换成整型的整数
    if score >= 90:
        print('优秀')
    elif score >= 80:
        print('良好')
    elif score >= 70:
        print('一般')
    elif score >= 60:
        print('及格')
    else:
        print('挂科')

image

4).if的嵌套使用(难点)

	 age = 28
    height = 170
    weight = 110
    is_beautiful = True
    is_success = False
    username = 'tony'
    if username == 'tony':
        print('tony发现目标')
        if age < 30 and height > 160 and weight < 150 and is_beautiful:
            print('大妹纸 手机掏出来 让我加微信')
            if is_success:
                print('吃饭 看电影 天黑了...')
            else:
                print('去你妹的 流氓!!!')
        else:
            print('不好意思 认错人了')
    else:
        print('不是tony做不出来这件事')

image

三.循环结构

1.while循环

就是让一些代码反复执行

1).while 条件:

 条件成立之后执行的子代码(循环体代码)
	 1.先判断条件是否成立
	 2.如果成立则执行循环体代码
	 3.循环体代码执行完毕后再次回到条件判断	 处 判断条件是否成立
    4.如果成立 则继续执行循环体代码
    5.按照上述规律依次执行 直到条件不成立才会结束循环体代码的执行
代码实现
count = 1  # 变量设置为1
while count < 5:  # 循环条件为count < 5 也就是循环到大于或等于的时候判定为False 结束循环
    print('hello world')  # 循环hello world
    count += 1  # count = count + 1
print('想不想干饭?')  # 循环结束后执行

image

2).break 强行结束循环体

while循环代码一旦执行break会直接结束循环

代码实现:
# 循环打印1-10 遇到5直接结束
count = 1
while count <= 10:
	if count == 5
		break  # 直接结束break所在的循环
	print(count)
	count += 1
print('哈哈')  #由于break直接结束所在循环,那么就会直接执行此步骤

输出结果
1
2
3
4
哈哈

3).continue 直接跳到条件判断处

while循环体代码一旦执行到continue会结束本次循环 开始下一次循环

代码实现:
# 循环打印1-10 遇到5跳过
count = 1
while count <= 10:
	if count == 5
		count += 1
		continue  # 直接结束本次循环 开始下一次循环
	print(count)
	count += 1
print('哈哈')


输出结果
1
2
3
4
6
7
8
9
10
哈哈

4).while...else...

while 条件:
    循环体代码
else:
    循环体代码没有被强制结束的情况下 执行完毕就会执行else子代码
代码实现:
count = 1  # 设置循环数据值
while count <= 10:  # 设置循环条件
	count += 1
	print('哈哈')
else:  # 以上代码没有被强制结束,将按顺序向下执行
	print('嘻嘻')

5).while循环补充说名

1.死循环

真正的死循环是一旦执行,CPU功耗会急速上升直到系统采取紧急措施
尽量不要让CPU长时间不间断运算

eg:
count = 10
while Ture:
	count *= 2

2.嵌套及全局标志位

强调:一个break只能结束它所在的那一层循环

强调:有几个while的嵌套 想一次性结束 就应该写几个break

强调:如果不想反复写break 可以使用群居标志位

is_flag = True
   while is_flag:
        username = input('username>>>:')
        password = input('password>>>:')
        if username == 'jason' and password == '123':
            while is_flag:
                cmd = input('请输入您的指令>>>:')
                if cmd == 'q':
                    is_flag = False
                print('正在执行您的指令:%s' % cmd)
        else:
            print('用户名或密码错误')

image

四.流程控制之for循环

for循环能够做到的事情while都可一做到 只不过for循环在一些场景下使用更简单,而且for循环不会出现死循环

主要场景为:循环获取储存多个数据的数据内部的数据值

实际案例

name_list = ['jason', 'kevin', 'tony', 'oscar']  # 遍历
    # 循环打印出列表中每一个数据值(while 索引取值>>>:超出范围会报错)
    # count = 0
    # while count < 4:
    #     print(name_list[count])
    #     count += 1
    # for循环
    for i in name_list:
        print(i)

image

1.for 循环语法结构

for 变量名 in 待遍历的数据:
    for循环体代码

2.for循环特点

1.擅长遍历取值

2.不需要结束条件 自动结束(遍历完)

3.for循环主要遍历的数据类型

	常见有 字符串、列表、元组、字典、集合
 info = 'hello world'
    for i in info:
        print(i)  # 单个单个字符
 


其中字典比较特殊
	d = {'username': 'jason', 'password': 123}
    for i in d:
        print(i)  # 只有键参与遍历

4.for循环语法结构中的变量名如何命名

	1.见名知意

	2.如果遍历出来的数据值没有具体含义 可以使用常用的:i   j   k   item   v

5.for循环中break/continue/else的使用

for循环体代码中如果执行到break也会直接结束整个for循环

for循环体代码中如果执行到continue也会结束当前循环直接开始下一次循环

for 变量名 in 待遍历的数据:
    for循环体代码
else:
    for循环体代码没有被break强制结束的情况下运行完毕之后 运行

五.range方法

range可以简单的理解为是帮我们产生一个内部含有多个数字的数据

for i in range(101):  # 起始位置为0 终止位置为100 
    print(i)  # [0,.......100]
 
for i in range(10, 20):  # 第一个数值为起始位置 第二个数值终止位置
    print(i)
    
for i in range(1, 20, 2):  # 第三个数为等差值 默认不写为1
    print(i)
 
"""
在python2中
	range()
		直接产生一个列表 内部含有多个数值
	xrange()
		其实就是python3里面的range
在python3中
	range()
		类似于一个工厂 不会占用太多的内存空间 要就生产
"""

实战案例

网络爬虫
	使用代码爬取网络上我们需要的数据
项目需求
	爬取所有页面的数据(博客园)
找寻规律
	https://www.cnblogs.com/
 	https://www.cnblogs.com/#p2
 	https://www.cnblogs.com/#p3
 	https://www.cnblogs.com/#p4
	
 	大胆猜测:第一页是 https://www.cnblogs.com/#p1
编写代码产生博客园文章前两百页的网址
	
'''
分页的规律 不同的网址有所区别
	1.在网址里面有规律
	2.内部js文件动态加载
'''
posted @ 2022-09-27 20:19  dear丹  阅读(24)  评论(0编辑  收藏  举报