python循环结构之for循环
内容回顾
逻辑运算符回顾
连接多个条件运算符,and、or、not
问题:连接多个条件的运算返回的是布尔值还是数据值??
如果所有的条件都是数据值,那么返回的就是数据值
```python
print(0 and 2 and 5) # 5
print(0 or 1 or 3 or 5) # 1
```
如果所有的条件都是表达式,那么返回的是布尔值
```python
print(1 < 0 and True and 3 > 1) # False
print(1 < 0 or True or 3 > 1) # True
```
如果条件既有表达式又有数据值,那么返回的结果就要看连接的逻辑运算符是and还是or
在遇到逻辑运算符都是and的情况时,从前到后要依次看条件是否都成立,最后一个条件是数据值就返回数据值,如果是表达式,就返回布尔值。
```python
print(1 and 1 < 2) # True
print(1 and 3 and True and 56) # 56
```
在遇到逻辑运算符都是or的情况时,从前向后依次看,遇到的第一个条件结果成立的时候,就返回,如果是数据值就返回数据值,如果是表达式就返回布尔值
```python
print(1 or 1 < 3 or True) # 1
print(3 > 1 or 1 < 2) # True
```
遇到多种运算符混合使用的时候,需要考虑优先级,()>not>and>or,遇到具体的数据值就返回数据值,遇到表达式,就返回布尔值
```python
print(1 and 3 > 2 or 5 or False and 3 == 3) # True
print(1 < 0 and 3 or 5 or False and 3 == 3) # 5
```
not的结果返回的只能是布尔值
循环结构之while基本语法
`while` 条件 条件成立后执行的子代码
while+break
`while` 条件:
条件成立后执行的子代码
break
break的用法是可以终止循环,如果是多个条件循环嵌套的情况时,break只是终止的他所在的那层循环不会影响其他的循环
while+continue
`while` 条件:
条件成立后执行的子代码
continue`
continue的用法是跳过这次循环,继续执行下次循环
while+else
`while` 条件:
条件成立后执行的子代码
`else`:
提前定义好的代码
else的用法是正常在循环体结束后执行的,不是异常执行,else与while同级
while的循环嵌套
`while` 条件:
条件成立执行的子代码
`whlie` 条件
条件成立后的子代码
循环嵌套需要注意代码的层级关系,代码的缩进,大循环套小循环,只需要循行同级的关系按照顺序结构一次向下执行,如果遇到while、if在做另行判断
死循环和全局标志位
死循环:循环体代码不能是连续的计算机任务,尽量不要去使用。
全局标志位:为了节省break,在开始定义一个True,结尾再重新定义为False
今日学习任务
循环结构之for循环
for循环能够做的事情while循环都可以做到,它可以遍历到任何序列的项目,例如列表、字典、字符串、元组、集合
通过列表索引迭代,一种执行循环的方式是通过索引,适用于列表、元组和集合
fruits = ['banana', 'apple', 'mango']
for i in fruits:
print('当前水果 : %s' % i)
"""
当前水果 : banana
当前水果 : apple
当前水果 : mango
"""
语法结构
`for` 变量名 `in` 可迭代对象:
for循环的循环体代码
for循环的过程,它会拿到给的数据,从前到后依次取出这个数据的每一个数据值然后赋值给前面的变量i,首先拿出第一个数据值绑定给i进行循环体里执行,执行结束后他会再次回到for循环里然后再次拿出第二个数据值进行赋值给i,然后继续执行循环体代码,其中i是一个动态绑定的,直到数据里的数据值全部取完后,它会自动结束
变量名的命名:如果待取名的数据有明确的方向,那么就要做到见名之意
常见的命名名字有:i、j、k、item
字典的取值,在for循环中,默认我们只能取到K值
dict = {'name': 'zhangran', 'age': 23, 'gender': 'women'}
for i in dict:
print(i)
"""
name
age
gender
"""
字符串的取值,for循环中,字符串的取值为单个字符
str = 'asdfgh'
for i in str:
print(i)
"""
a
s
d
f
g
h
"""
扩展知识
for的重要方法----range:它是一个能够帮我们产生一个包含许多数据值的列表,他总共有三种用法
`for` 变量名 in range(数字):
循环体代码
当range后面只跟了一个数字,从0开始到范围值-1结束例如:范围值为4的时候,结果是0,1,2,3,4
`for` 变量名 in range(数字1,数字2):
循环体代码
当range后面跟了俩个数字,第一个是起止位置,第二个为终止位置,这时候产生的数据值的特点是”顾头不顾尾“,即左包含右不包含。例如:(1,6),结果是1,2,3,4,5
`for` 变量名 in range(数字1,数字2,间隔数):
循环体代码
当range后面跟了三个数字,最后一个数字为数据之间的间隔数(也可理解为等差数列)例如:(1,10,2),结果是1,3,5,7,9
range方法实际操作---网络爬出
网络爬虫:python代码模拟网络请求获取数据
```python
base_url = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0, 250, 25):
print(base_url % i)
"""
https://movie.douban.com/top250?start=0&filter=
https://movie.douban.com/top250?start=25&filter=
https://movie.douban.com/top250?start=50&filter=
https://movie.douban.com/top250?start=75&filter=
https://movie.douban.com/top250?start=100&filter=
https://movie.douban.com/top250?start=125&filter=
https://movie.douban.com/top250?start=150&filter=
https://movie.douban.com/top250?start=175&filter=
https://movie.douban.com/top250?start=200&filter=
https://movie.douban.com/top250?start=225&filter=
"""
```
for与其他关键字一起使用
1. for + break
break强制结束所在的那层for循环
2. for + continue
continue跳过这次循环继续下次循环
3. for + else
else配合for一起使用 当for循环没有被强制结束的情况下 循环体结束之后运行else子代码