python学习Day09
Day 09
今日内容概要
- 循环结构—for循环
- for循环
- range方法实操
- 网络爬虫
今日内容详细
1.循环结构—for循环
1.前戏
eg:
循环打印出列表中每一个数据值
l1 = ['a', 'b', 'c', 'd']
1)while循环操作:
num = 0 # 定义一个索引为0的变量名
while num < 4:
print(l1[num]) # 索引列表取值:索引0
num += 1 # 每次循环时索引自增1
2)for循环操作:
for i in l1: #无论列表增加多少数据都不会报错
print(i)
# for循环的变量名i会从给到他的数据中从左往右依次循环赋值,直到没有数据后自动结束
"""
for循环能够做到的事情while循环都可以做到
但是for循环的语法结构更加简单 尤其擅长循环取值(迭代)
"""
2.语法结构
for 变量名 in 可迭代对象: #字符串 列表 字典 元组 集合
for循环的循环体代码
for i in [1,2,3]
print('z')# 结果是打印了3遍z
#in后面的列表里有几个数据值 就会循环几次
3.变量名命名
1)如果有明确的指向,最好做到见名知意
eg:
for name in 学生名单
for addr in 地址名单
2)如没有明确指向,可用常见的字母
eg:
i j k v item...
4.常见取值操作
1)for循环列表:
eg: 循环打印出列表中每一个数据值
l1 = ['a', 'b', 'c', 'd']
for i in l1: #无论列表增加多少数据都不会报错
print(i)# 结果就是a b c d各一行
2)for循环字典:
eg: 循环打印出列表中每一个数据值
dict = {'name1':'张','name2':'王','name3':'李'}
for i in dict:
print(i) #结果就是字典的K值各一行
3)for循环字符串:
eg:循环打印出列表中每一个数据值
desc = 'hello'
for i in desc:
print(i) #结果就是字符串中的单字符各一行
4)for循环元组:
eg: 循环打印出列表中每一个数据值
t = (1,2,3,4)
for i in t:
print(i)# 结果与列表一致都是单个数据值
5)for循环集合:
eg: 循环打印出列表中每一个数据值
s1 = {1,2,3,4}
for i in s1:
print(i)# 结果与列表一致都是单个数据值
'整数型、浮点型、布尔值不支持该方式'
5.for循环重要知识:
1.range方法 (范围)
range能快速产生一个包含多个数据值的列表
(1)for i in range(5):#如果括号内只有一个数字,那就是从0到4结束(顾头不顾尾,左包含右不包含)
(2)for i in range(3,10):#如果括号内有两个数字,那第一个就是起始(包含)位置,第二个是终止(不包含,需数字减1)位置
(3)for i in range(0,100,25):#如果括号内有三个数字,第一个是起始位置,最后一个数是间隔数字,中间的是总共有多少数字(等差数列)
"""
1.在python2中有两个:
1)range(数字)
直接产生一个列表 当数据量很大的时候可能会造成内存溢出(爆满)
2)xrange()
其实就是python3里面的range方法
2.在python3中只有一个:
range()
类似于是一个工厂 什么时候要什么时候创建给你 节省内存
"""
1.for+break
#打印1-10 到7结束
for i in range(1,11):
if i == 7:
break#结束break所在的for循环
print(i)
#循环打印1-10 到7结束后继续循环打印上一步操作
while True:
for i in range(1,11):
if i == 7:
break#结束break所在的for循环
print(i)
2.for+continue
# 打印1-10 到7跳过继续打印后面的数字
for i in range(1, 11):
if i == 7:
continue#结束所在的那一次循环直接开始下一次循环
print(i)
3.for+else
for i in range(10):
print(i)
if i == 5:
break
else:
print('永远不会执行')
—— —— —— —— —— —— —— —— —— —— —— —— ——
for i in range(10):
print(i)
if i == 7:
continue
else:
print('执行完上面的循环体将执行此行')
"""
else配合for一起使用 当for循环没有被强制结束的情况下 循环体结束之后运行else子代码
"""
2.range方法实操
网络爬虫:python代码模拟网络请求获取数据
方式一:很多网站数据有很多页,有时候需要代码模拟
eg:
# 编写代码自动产生博客园前一百的网址
https://www.cnblogs.com/#p1 第一页
https://www.cnblogs.com/#p2 第二页
https://www.cnblogs.com/#p3 第三页
https://www.cnblogs.com/#p4 第四页
ye = 'https://www.cnblogs.com/#p%s'#定义一个模板%s
for i in range(1,101):
print(ye % i)
作业
1.计算1-100所有的数之和
2.判断列表中数字2出现的次数
l1 = [11,2,3,2,2,1,2,1,2,3,2,3,2,3,4,3,2,3,2,2,2,2,3,2]
3.编写代码自动生成所有页网址
https://movie.douban.com/top250
4.编写代码打印出下列图形(ps:for循环嵌套)
*****
*****
*****
*****
————————————————————————————————————————————————————————————————————————————————
1.计算1-100所有的数之和
2.判断列表中数字2出现的次数
3.编写代码自动生成所有页网址
4.编写代码打印出下列图形(ps:for循环嵌套)
*****
*****
*****
*****