1.循环结构之 for 循环
for 变量名 in 可迭代对象: #字符串 列表 字典 元组 for 循环的循环体代码
针对变量名的命名 如果带取值的数据有明确的指向 最好见明知意
例: form name in 学习姓名名单 for addr in 地址信息
如果没有明确的指向 可以使用常见的字母
i j k item v ....
用 while 和 for 循环打印 l1 = ['a', 'b', 'c', 'd']
whlie:
x = 0 # 定义 x 初始值为0 while x < 4: # x < 4 取 0 1 2 3 print(l1[x]) # 索引取值 x += 1 # 循环x值加一
for:
for i in l1: # 变量名 i 从l1依次取值 print(i) # 打印i
比较两者代码 在取值中 for 比 while 更简洁
1.for 循环 字典
user_dict = {'username': 'zhang', 'password': 123, 'age': 12} for i in user_dict: print(i)
从结果可以看出 for 循环字典 默认只能取到字典的key
2.for 循环 字符串
x = 'hello 你好' for i in x: print(i)
从结果可以看出 for 循环字符出串 默认每次取单个字符
3.for 循环 元组
x = (11, 22, 33, 44) for i in x: print(i)
从结果可以看出 for 循环元组数据与列表一致 默认都是单个数据值
4.for 循环 集合
x = {1, 2, 3, 4} for i in x: print(i)
从结果可以看出 for 循环集合数据与列表一致 默认都是单个数据值
如上图 for 循环 集合打印出结果是乱序的,为什么???
因为字典,集合本身就是无序的,打印出结果,这个排序都是随机的,没有规律可言,只不过字典编程工具为了便于我们查看 一般会给你弄个顺序
range 方法
range可以看成是一个能够帮助我们快速产生一个包含多个数据值的列表
1.如果括号内只有一个数字 那么就是从0开始到数字减一结束(顾头不顾尾 左包含右不包含)
for i in range(5): print(i)
2.括号内有两个数字 第一个是起止位置(包含) 第二个是终止位置(不包含)
for i in range(3, 7): print(i)
3.括号内有三个数字 最后一个是数据间隔符(等差数列)
for i in range(2, 30, 5): print(i)
在python2中有两个
range()
直接产生一个列表 当数据量很大的时候可能会造成内存溢出(爆满)
xrange()
其实就是python3里面的range方法
在python3中只有一个
range()
类似于是一个工厂 什么时候要什么时候创建给你 节省内存
网络爬虫:python代码模拟网络请求获取数据
很多网址的数据都不止一页 所以有时候需要通过代码模拟
https://www.cnblogs.com/ 第一页
https://www.cnblogs.com/#p2 第二页
https://www.cnblogs.com/#p3 第三页
https://www.cnblogs.com/#p4 第四页
...
大胆猜则第一页还可以这么写
https://www.cnblogs.com/#p1
# 编写代码自动产生博客园前一百的网址 # 提前定义好一个模板 url = 'https://www.cnblogs.com/#p%s' for i in range(1, 101): print(url % i)
break也能够结束所在的那一层for循环
# 1-10 7结束 for i in range(1,11): if i == 7: break print(i)
continue也能够结束所在的那一次for循环 直接开始下一次
# 1-6 4跳过 for i in range(1, 6): if i == 4: continue print(i)
else配合for一起使用 当for循环没有被强制结束的情况下 循环体结束之后运行else子代码
for i in range(10): print(i) if i == 5: break else: print('我什么时候执行')
1.计算1-100所有的数之和
sum = 0 for i in range(101): 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] x = 0 for i in l1: if i == 2: x += 1 print(x)
3.编写代码自动生成所有页网址,https://movie.douban.com/top250
url = 'https://movie.douban.com/top250?start=%s&filter=' for i in range(0, 250, 25): print(url % i)
4.编写代码打印出下列图形(ps:for循环嵌套)
for i in range(4): for j in range(5): print('*', end='') print()