流程控制

流程控制

流程控制理论

流程控制:
	控制事物的执行流程
    
事物的控制流程可以分为三种:
	顺序结构
    分支结构
    循环结构
    
ps:我们用到的最多的时分支结构和循环结构 很重要
	在代码世界里 很多时候会出现三者结合

image

流程控制必备知识

1.python中使用代码的缩进来表示从属关系 (一般是4个空格 也可以用tab键)
	从属关系:所进的代码(子代码)是否执行 取决于上面没有所进的代码(父代码)
2.并不是所有的关键字都能拥有缩进的子代码
	if 关键字
3.如果多个子代码属于同一个父代码 那么这些子代码的缩进需要一样
4.当某一行代码需要编写子代码的时候 这一行的末尾一定要写冒号
5.相同缩进量的代码没有主次之分 按照顺序 自上而下执行

分支结构

1.单if分支结构

if 条件:
	条件成立之后才会执行的代码
    
eg:
	name = input('请输入您的姓名:')
	if name == 'joyce':
    	print('姐姐好')
    '''
    判断获取用户输入的name是不是等于joyce 
    如果等于joyce就打印’姐姐好‘
    '''

2.if...else分支

if 条件:
	条件成立才会执行的代码
else:
	条件不成立执行的代码
    
eg:
	name = input('请输入您的姓名:')
    if name == 'joyce':
        print('姐姐好')
    else:
        print('你是谁')
    '''
    判断获取用户输入的name是不是joyce 
    如果是joyce就打印’姐姐好‘
    如果不是joyce就打印’你是谁‘
    '''

image

3.if..elif..else

if 条件1:
	条件1成立执行的代码
elif 条件2:
	条件1不成立 条件2成立执行的代码
else:
	条件1 条件2都不成立执行的代码
    
eg:
	name = input('请输入您的姓名:')
    if name == 'joyce':
        print('姐姐好')
    elif name == 'jason':
        print('哥哥好')
    else:
        print('你是谁')
    '''
    判断获取用户输入的name是不是joyce 
    如果是joyce就打印’姐姐好‘
    如果是Jason就打印’哥哥好‘
    如果两个都不是就打印’你是谁‘
    '''

三个一起的使用的时候永远只会走一个分支

elif可以写多个

elif和else不能单独使用 必须结合if

image

4.if的嵌套

if 条件1:
	条件1成立后执行的代码
	if 条件2:
    	条件2成立后执行的代码
    	if 条件3:
        	条件3成立后执行的代码
        else:
        	条件3不成立执行的代码
     else:
    	条件2不成立执行的代码
else:
	条件1不成立执行的代码
    
''' if 后面可以继续跟if 最后补elif 但是要注意 缩进是否与父代码一样'''
        	

image

循环结构

1.while循环

while 条件:
	条件成立后执行的代码(循环体代码)
    
'''
1.先判断条件是否成立
2.如果成立则执行循环体代码
3.循环体代码执行完毕以后再次回到条件判断出 判断条件是否成立
4.如果成立 则继续执行循环体代码
5.按照上述规律执行 直到条件不成立才会结束循环体代码的执行
'''

image

结束循环体代码的两种方式

1.利用技术其固定循环次数

#循环打印5次“你好”

count = 1
while count < 6:
    print('你好')
    count += 1
    
'''
设置循环条件 count小于6的时候 执行打印‘你好’
每打印一次‘你好’ count+1 回到条件判断处
第二次循环开始时 count = 2 继续判断你条件是否成立
直到 count = 6是 结束循环
'''

2.在循环体内添加关键字强制结束

break

#循环打印1-10,打印到5结束打印

count = 1  #定义计数器
while count < 11:  #循环打印次数为10
    print(count)  #打印计数器
    count += 1  #计数器自增1
    if count == 6:  #当计数器等于6时
        break  #强制结束循环
#结果为:1 2 3 4 5

'''
定义计数器
循环打印次数为10
打印计数器
计数器自增1
计数器小于6不执行if判断 返回开始的条件判断处继续执行代码
count = 6时 执行if判断里的代码 break 强制结束
'''

continue

#循环打印1-5,到3跳过并继续打印

count = 1  #定义计数器
while count < 6:  #循环打印次数为5
    print(count)  #打印计数器
    count += 1  #计数器自增1
    if count == 3:  #当计数器=3时
        count += 1  #计数器自增1
        continue  #结束本次循环开始下一次循环
#结果为:1 2 4 5
'''
定义计数器
循环打印次数为5
打印计数器
计数器自增1
计数器不等于3不执行if判断 返回开始的条件判断处继续执行代码
count = 3时 执行if判断里的代码 continue 跳过本次循环 直接开始下一次循环
'''

else

循环体代码没有被break强制结束的话 循环体代码全都执行完毕就会执行else子代码

count = 1
while count < 6:
    print(count)
    count += 1
else:
    print('循环体代码全部执行完且没有被break!则执行else')
#结果为: 1 2 3 4 5 循环体代码全部执行完且没有被break!则执行else

死循环

死循环就是让程序无限执行某个代码文件 此时cpu使用率会持续上升 直到满负荷重启代码中不允许出现死循环

count = 10
while True:
    count *= 100 # 计算机会循环执行*=100的结果值

循环的嵌套及全局标志位

1.一个break只能结束当前所在的那一层的循环

2.想一次性结束所有的循环就要有几个while 写几个break 注意break的位置一般是和while对应的

当while循环内嵌套了多个while循环时可以使用全局标志位

while True:
    print(111)
    while True:
        print(222)
        while True:
            print(333)
#以上循环嵌套当我想结束所有while循环时需要给各个while循环内加break结束所有循环,这样做效率太低且当循环体代码较多时加break时易分不清加在哪里!

is_flag = True
while is_flag:
    print(111)
    while is_flag:
        print(222)
        while is_flag:
            print(333)
            is_flag = False
'''
只需要添加一个全局标志位,且在最内层把该标志位的True
当所有代码执行完毕时 最下面的全局标志位改位false
即可实现结束内外所有循环。
'''

2.for循环

一般for循环可以实现的代码while都可以实现 区别在于for循环在做遍历取值的时候比while要方便

for 变量名 in 待遍历的数据:
	循环体代码
'''
从待遍历的数据中取出一个值给变量名 从上到下执行循环体代码 然后回到for开头在取第二次 直到把代编里的数据都取完
'''

1.while与for循环对比

​ 循环打印列表中的数据值

l1 = [1,2,3,4]

#while
count = 0
while count < 4:
    print(l1[count])
    count += 1
'while需数出来列表中有几个数据值 然后定义计数器 循环条件小于数据值的数量 用列表索引取值每循环一次索引值自增1'
'当列表中数据值较多时while使用会非常不方便!'

#for
for i in l1:
    print(i)
'for循环的变量名i会从给到他的数据值中从左到右依次赋值循环,直到没有数据值可给时自动结束(不需要给结束条件)。'

2.for循环的另一种用法

for i in 1,2,3:
    print('z')
#结果为:打印了三行‘z’

'''
由此可以看出 待遍历的数据可以有多个 相当于循环的次数
如果是列表 则是列表中有多少数据值就会循环几次
如果打印的是变量名 结果就是待遍历的数据值
如果打印的是其他数据值 结果就是循环打印几次该数据值
'''

3.for循环支持遍历[取值]的数据类型

常见的有字符串、列表、字典、元组、集合

遍历字符串时打印出来的是单个的字符 且空字符也算一个字符

遍历字典的时候只有k参与 

4.for结束循环体的方式

for+break

强制结束当前所在的循环体代码

#循环打印1-10,打印到5结束打印

for i in range(1, 11):
    print(i)
    if i == 5:
        break
#结果为:1 2 3 4 5 各一行
'在想要强制结束之前也要设置结束条件  需注意打印位置的不同 产生的结果也不同 需了解执行流程才好判断'

for +continue

当执行到continue时结束本次循环 并回到循环体条件判断出开始下一次循环

#循环打印1-5,到3跳过并继续打印

for i in range(1,6):
    if i==3:
        continue
    print(i)
#结果为:1 2 4 5 各一行
'需注意打印位置的不同 产生的结果也不同 需了解执行流程才好判断'

for+else

循环体代码没有被break强制结束 循环体代码全部执行完就会执行else子代码

count = 1
for i in range(3):
    print(i)
else:
    print('循环体代码全部执行完且没有被break!则执行else')
#结果为:0 1 2 循环体代码全部执行完且没有被break!则执行else 各一行

5.range方法

range可以理解为快速产生一个包含多个整数的列表 (产生整数的大工厂)

1)括号内只有一个数字,那就是从0到4结束(顾头不顾尾)
  for i in range(5): 
    print(i)
    #结果为:0 1 2 3 4 各一行
2)括号内有两个数字,第一个就是起始位置,第二个就是终止位置(顾头不顾尾)
  for i in range(1,5): 
    print(i)
    #结果为:1 2 3 4 各一行
3)括号内有三个数字,第一个是起始位置,第二个是终止位置,第三个是等差值(间隔)。同样顾头不顾尾
  for i in range(1,10,3):
    print(i)
    #结果为:1 4 7 各一行

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文件动态加载
'''
尝试编写代码产生博客园文章前两百页的网址:
a='https://www.cnblogs.com/#p%s'
for i in range(1,201):
    print(a % i)	
posted @ 2023-01-17 23:47  李李大冒险  阅读(48)  评论(0编辑  收藏  举报
  1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 迷人的危险3 FAFA
  4. 4 山楂树之恋 程佳佳
  5. 5 summertime cinnamons / evening cinema
  6. 6 不谓侠(Cover 萧忆情Alex) CRITTY
  7. 7 神武醉相思(翻自 优我女团) 双笙(陈元汐)
  8. 8 空山新雨后 音阙诗听 / 锦零
  9. 9 Wonderful U (Demo Version) AGA
  10. 10 广寒宫 丸子呦
  11. 11 陪我看日出 回音哥
  12. 12 春夏秋冬的你 王宇良
  13. 13 世界が终わるまでは… WANDS
  14. 14 多想在平庸的生活拥抱你 隔壁老樊
  15. 15 千禧 徐秉龙
  16. 16 我的一个道姑朋友 双笙(陈元汐)
  17. 17 大鱼 (Cover 周深) 双笙(陈元汐)
  18. 18 霜雪千年(Cover 洛天依 / 乐正绫) 双笙(陈元汐) / 封茗囧菌
  19. 19 云烟成雨(翻自 房东的猫) 周玥
  20. 20 情深深雨濛濛 杨胖雨
  21. 21 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  22. 22 斑马斑马 房东的猫
  23. 23 See You Again Wiz Khalifa / Charlie Puth
  24. 24 Faded Alan Walker
  25. 25 Natural J.Fla
  26. 26 New Soul Vox Angeli
  27. 27 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  28. 28 像鱼 王贰浪
  29. 29 Bye Bye Bye Lovestoned
  30. 30 Blame You 眠 / Lopu$
  31. 31 Believer J.Fla
  32. 32 书信 戴羽彤
  33. 33 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  34. 34 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  35. 35 慢慢喜欢你 LIve版 戴羽彤
  36. 36 病变 戴羽彤
  37. 37 那女孩对我说 (完整版) Uu
  38. 38 绿色 陈雪凝
  39. 39 月牙湾 LIve版 戴羽彤
像鱼 - 王贰浪
00:00 / 04:45
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 周有才

作曲 : 周有才

这是一首简单的歌

没有什么独特

试着代入我的心事

它那么幼稚

像个顽皮的孩子

多么可笑的心事

只剩我还在坚持

谁能看透我的眼睛

让我能够不再失明

我要记住你的样子

像鱼记住水的拥抱

像云在天空中停靠

夜晚的来到

也不会忘了阳光的温暖

我要忘了你的样子

像鱼忘了海的味道

放下所有梦和烦恼

却放不下回忆的乞讨

多么可笑的心事

只剩我还在坚持

谁能看透我的眼睛

让我能够不再失明

记住你的样子

像鱼记住水的拥抱

像云在天空中停靠

夜晚的来到

也不会忘了阳光的温暖

我要忘了你的样子

像鱼忘了海的味道

放下所有梦和烦恼

却放不下回忆的乞讨

只剩自己就好