- 循环结构之for循环
- 扩展:网络爬虫
- for循环介绍
for 循环的语法结构简单,for循环能够做到的事情while循环也能做到。
for循环会比while循环简单易操作一些
- for循环与while循环对比
1.while循环打印列表内容(代码展示如下):
name_list = ['jason','kevin','tony','tank','ken']
# 使用while循环依次打印出列表中所有的元素
count = 0
while count < 5:
print(name_list[count])
count += 1
"""while循环存在缺陷"""
2.for循环打印列表内容(代码展示如下):
name_list = ['jason','kevin','tony','tank','ken']
# 使用for循环依次打印出列表中的所有元素(会自动结束)
for name in name_list:
print(name)
"""一般情况下涉及到循环取值的时候,都会考虑使用for循环"""
由上两段代码展示可以看出for循环代码段少,语法结构简单。
- 语法结构
# for name in name_list: # for 变量名 in 可迭代对象(字符串,列表,字典,元组) # for循环的循环体代码 # print(name)
针对变量的命名:要做到见名知意
for name in 姓名名单
for age in 年龄信息
针对没有明确指向的信息:常用i;j;k;v;item…
- 常见的取值操作
1.列表
name_list = ['jason','kevin','tony','tank','ken']
# 使用for循环依次打印出列表中的所有元素(会自动结束)
for name in name_list:
print(name)
D:Python36python36.exe "E:/pythonProject/Day06/01 yuxi.py"
jason
kevin
tony
tank
ken
Process finished with exit code 0
2.字典(只取K值)
# 字典
name_dict = {
'name':'jason',
'pwd':'123',
'age':'20'
}
# """for循环字典 默认只能取到字典的K值"""
for i in name_dict:
print(i)
D:Python36python36.exe "E:/pythonProject/Day06/01 yuxi.py"
name
pwd
age
Process finished with exit code 0
3.字符串(默认取单个字符)
# 字符串:依次取出每一个字符
for i in 'hello world':
print(i)
D:Python36python36.exe "E:/pythonProject/Day06/01 yuxi.py"
h
e
l
l
o
w
o
r
l
d
Process finished with exit code 0
4.元组(与列表一致,全部取单个数据值)
5.集合(与列表一致,全部取单个数据值)
# 元组
name = (11,22,33,44)
for i in name:
print(i)
# 集合
s1 = {1,2,3,4}
for i in s1:
print(i)
D:Python36python36.exe "E:/pythonProject/Day06/01 yuxi.py"
11
22
33
44
1
2
3
4
Process finished with exit code 0
- for 循环结构之敲重点
1.range方法:可以看成能够快速产生一个包含多个数据值的列表。
代码一:
#如果括号内只有一个数字 那么就是从0开始到数字减一结束(顾头不顾尾 左包含右不包含)
# range方法
for i in range(5):
print(i)
D:Python36python36.exe "E:/pythonProject/Day06/01 yuxi.py"
0
1
2
3
4
Process finished with exit code 0
代码二:
#括号内有两个数字 第一个是起始位置(包含) 第二个是终止位置(不含)
# range 方法
for i in range(1,10):
print(i)
D:Python36python36.exe "E:/pythonProject/Day06/01 yuxi.py"
1
2
3
4
5
6
7
8
9
Process finished with exit code 0
代码三:
#括号内有三个数字 最后一个是数据的间隔数(等差数列)
# range方法
for i in range(0,100,20):
print(i)
D:Python36python36.exe "E:/pythonProject/Day06/01 yuxi.py"
0
20
40
60
80
Process finished with exit code 0
2.for + break:
break结束它本身所在的那层循环
# for + break
# 1-10 ,5结束
for i in range(1,11):
if i == 5:
break
print(i)
D:Python36python36.exe "E:/pythonProject/Day06/01 yuxi.py"
1
2
3
4
Process finished with exit code 0
3.for + continue"
continue也能够结束所在的那一次for循环 直接开始下一次
# for + continue
# 1-10 ,4跳过
for i in range(1,8):
if i == 4:
continue
print(i)
D:Python36python36.exe "E:/pythonProject/Day06/01 yuxi.py"
1
2
3
5
6
7
Process finished with exit code 0
4.for + else"
else配合for一起使用 当for循环没有被强制结束的情况下 循环体结束之后运行else子代码
# for + else
# 没有被强制结束
for i in range(10):
print(i)
else:
print('加油')
# 被break强制结束
for i in range(10):
print(i)
if i == 5:
break
else:
print('加油')
D:Python36python36.exe "E:/pythonProject/Day06/01 yuxi.py"
0
1
2
3
4
5
6
7
8
9
加油
0
1
2
3
4
5
Process finished with exit code 0
- range方法实操之python爬虫
网络爬虫:爬取想要的数据,python代码模拟网络请求获取数据。
举个栗子:博客园前一百页网址
# 编写代码自动产生博客园前一百的网址
base_url = 'https://www.cnblogs.com/#p%s'
for i in range(1, 101):
print(base_url % i)
补充知识点之不同解释器range用法:
在python2.7中用法:
1.range()
直接产生一个列表 当数据量很大的时候可能会造成内存溢出
2.xrange()
与python3.6里面range方法一样
在python3.6中用法:
1.range()
1.计算1-100所有的数之和
sum = 0
for i in range(1,101):
sum = sum + i
print(sum)
作业二:
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]
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]
sum = 0
for i in l1:
if i == 2:
sum += 1
print(sum)
作业三:
3.编写代码自动生成所有页网址
https://movie.douban.com/top250
base_url = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0,250,25):
print(base_url % i)
作业四:
4.编写代码打印出下列图形(ps:for循环嵌套)
*****
*****
*****
*****
for i in range(4):
for k in range(5):
print('*',end='')
print()
拓展:
*
**
***
****
a = 1
for i in range(4):
for k in range(a):
print('*',end='')
a += 1
print()
* *** ***** *******
num = 5
for low in range(1, num):
for i in range(num - low):
print(' ', end='')
for k in range(2 * low - 1):
print('*', end='')
print()



