python入门第六课--for循环与数据类型内置方法
昨日内容回顾
- 垃圾回收机制
1.引用计数
2.标记清除
3.分代回收
- 流程控制理论
控制事物执行的流程
顺序结构
分支结构
循环结构
- 流程控制之分支结构
1. 单if分支
if 条件:
条件成立执行的子代码
2. if...else分支
if 条件:
条件成立执行的子代码
else:
条件不成立执行的子代码
3.if...elif...else分支
if 条件1:
条件1成立执行的子代码
elif 条件2:
条件1 条件2成立执行的子代码
else:
条件不成立执行的子代码
4.if嵌套
前期不熟练可以结合流程图理解
- 流程控制之循环结构
while 条件:
1. 条件成立执行的循环体代码
2. 循环体代码中执行到break会直接结束整个循环
3. 循环体代码中执行到continue会直接回到条件判断处重新执行
while 条件:
1. 条件成立执行的循环体代码
else:
1. 循环体代码没有被break强制结束的情况下 当循环体代码运行结束就会执行else的子代码
今日内容概要
- 作业讲解 转到流程控制常见例题
- while循环补充说明:
- 为什么要有循环? 因为循环可以避免大量的代码重复
- 死循环:当一个循环可以执行无限次,也就是没有终止条件,我们称这个循环是死循环。一旦出现死循环,CPU的温度与占有率会慢慢提升,最终搞崩服务器,
- 嵌套(注意break放的位置)
- 全局标志位:while的循环嵌套中,当有多个while的时候,需要有多个相对应的break去结束,此时可以用全局标志位,可以直接跳出整个while的大循环,比较方便。
- 流程控制之for循环
- 基本数据类型内置方法
流程控制之for循环
for 变量名 in 待遍历的数据:
for循环能够做到的事情while都可以做到 只不过for循环在一些场景下使用更简单
主要场景为:循环获取存储多个数据的数据内部数据值。
# 遍历:就是循环的将一个比如列表里面的数据一个一个的全部取出来,每取一个数据执行一次for的子代码。
实际案例:
name_list = ['jason', 'kevin', 'tony', 'oscar']
1. 用while进行循环取值
count = 0
while count < 4: # (while 索引取值>>>:超出范围会报错,比如这就不能设置大于4的数字)
print(name_list[count])
count += 1
# 这串代码可就将列表里面的每一个数据值取出来
2. 用for进行循环取值
for i in name_list: # for循环
print(i)
for用法的优点:如果是循环取值时,代码比while简单,而且不需要定义索引取值的范围,直接默认重头全部打到尾。
.
1. for循环语法结构:
for 变量名 in 待遍历的数据: # 此处的变量名可以不需要提前定义。
2. for循环特点:
1. 擅长遍历取值
2. 不需要结束条件, 自动结束(遍历完)。
3. for循环主要遍历的数据类型有:
常见有 字符串、列表、元组、字典、集合
元组与列表相似,都是都是单个单个全部取出。
info = 'hel lo'
for i in info:
print(i) # 字符串里面的所有的单个字符按顺序全部打印,包括空格。
h
e
l
l
o
d = {'username': 'jason', 'password': 123}
for i in d:
print(i) # 只有键参与遍历 也就是只打印键,不打印值。
username
password
1. for循环语法结构中的变量名如何命名
1.1 见名知意
1.2 如果遍历出来的数据值没有具体的含义 可以使用常用的 字母 i j k item v
2. for循环体代码中,如果执行到break,也会直接结束整个for循环。
3. for循环体代码中,如果执行到continue,也会结束当前循环直接开始下一次循环。
4. for与else联用语法结构:
for 变量名 in 待遍历的数据:
for循环体代码
else:
for循环体代码没有被break强制结束的情况下运行完毕之后,才运行,也就是说for循环体种如果遇见break不仅for的子代码不执行了,与for同级别的else里面的子代码也不要执行了。直接跳出for与else的子代码,再往下找与for同级别的代码继续执行。
range方法 for i in range()
range 范围,界限(n)
遍历:谓遍历是指对树中所有结点的信息的访问,即依次对树中每个结点访问一次且仅访问一次。
range可以简单的理解为是帮我们产生一个内部含有多个数字的数据的工厂。
为什么要用range?
for i in range(101): # 起始位置为0 终止位置为100
print(i) # [0,.......100]
for i in range(10, 20): # 遍历的起始位置为10,终止位置19。顾头不顾尾,也就是说for的循环取值,只会从10一直取到19 。最后一个值一定不会取 。
print(i)
for i in range(1, 21, 2): # 第三个数为等差值 默认不写为1,还是顾头不顾尾,只会从1一直取到19 。最后一个值一定不会取 。
print(i)
python2与python3的区别:
在python2中
range()
直接产生一个列表 内部含有多个数值
xrange()
其实就是python3里面的range
在python3中
range()
类似于一个工厂 不会占用太多的内存空间 要就生产
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
编写代码产生博客园文章前两百页的网址
重而得出该网页的登录地址模板为:
https://www.cnblogs.com/#p1 #第一页
https://www.cnblogs.com/#p2 #第二页
https://www.cnblogs.com/#p3 #第三页
https://www.cnblogs.com/#p200 #第两百页
所以建立模板网页模板:
base_url = 'https://www.cnblogs.com/#p%s' # %s放在要取代的位置
for i in range(0, 201, 1): # range顾头不顾尾,所以想取到200,范围必须要写到201
print(base_url % i) # 通过格式化输出
这题主要考察,格式化输出与for循环range遍历取值的联合运用,格式化输出代码要作为for循环的子代码运行,才能达到每一个for循环取值并格式化打印出来的效果。
注意此处 for i in 循环取值时,一定不要忘记写range,不写这个循环就会当作元组只取3个值。
网站分页的规律 不同的网址有所区别
1.在网址里面有规律
2.内部js文件动态加载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY