for循环
for
循环的主要作用是遍历数据(容器))中的元素。字符串、列表等高级数据类型都属于容器,都可以通过for
循环遍历
for
循环的语法格式如下:
for 临时变量 in 列表或字符串等可迭代对象:
执行的代码
使用for
循环遍历字符串中的所有字符
:::info
需求:
打印字符串’hello world’中每一个字符
:::
代码如下:
str = 'hello world'
# ele普通变量 接收容器中的元素
for s in str:
print(s)
in和not in
in
操作符用于判断元素是否存在于容器中,如果在容器中,返回 True
,否则返回 False
str = 'hello'
result = 'h' in str
print(result)
result = 'e' not in str
print(result)
结果:
True
False
range
range()
可创建一个整数列表。range()
相当于数学中的左闭右开区间(包含左,不包含右)
我们先看看数学中的区间:
全开全闭区间
- 开区间:
(1,10)
不包含1和10 - 闭区间:
[1,10]
包含1和10
半开半闭区间
- 左开右闭区间:
(1,10]
包含10不包含1 - 左闭右开区间:
[1,10)
包含1不包含10
range的定义
# 定义0到10的区间(包含0,不包含10)
arr = range(0, 10)
如果区间从0开始可以省略0
# 定义0到10的区间(包含0,不包含10)
arr = range(10)
倒序的区间定义
# 定义从10到1的区间,参数分别代表 start开始, stop结束, step步长
arr = range(10, 0, -1)
区间可以通过for进行遍历
# 定义0到10的区间(包含0,不包含10)
arr = range(0, 10)
# 遍历区间
for ele in arr:
print(ele)
练习-水仙花数
需求
打印出所有”水仙花数”,所谓”水仙花数”是指一个三位数[100, 1000)
,其各位数字立方和等于该数本身。
例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
分析
:::info
- 遍历所有的三位数
- 求 百位 十位个位 立方和
- 判断并打印
:::
实现
for ele in range(100, 1000):
# 百位
hun = ele // 100
# 十位
ten = ele // 10 % 10
# 个位
single = ele % 10
# 判断立方和
if (hun**3 + ten**3 + single**3) == ele:
print(ele)
break和continue
**break**
和**continue**
是专门在循环中使用的关键字
- break:某一条件满足时,不再执行循环体中后续代码,并退出循环
- continue:某一条件满足时,不再执行本次循环体中后续代码,但进入下一次循环判断
break
结果:for i in range(5):
if i == 3:
break
print(i)
0
1
2
continue
结果:for i in range(5):
if i == 3:
continue
print(i)
0
1
2
4
循环结合else
循环也可以像if
语句一样结合else
。
else
中的语句会在循环正常执行完(即没有通过 break
或其他异常情况中断循环)的情况下执行,while
循环也是如此
格式:
for 变量 in 容器:
循环体代码
else:
没有通过break退出循环, 循环结束后, 会执行的代码
for else,会执行else中的代码
str = 'hello world'
for ele in str:
print(ele)
else:
print('执行了else语句')
for else中执行了continue,会执行else中的代码
for ele in str:
if ele == 'l':
continue
print(ele)
else:
print('执行了else语句')
for else中执行了break,else语句不会执行
for ele in str:
if ele == 'l':
break
print(ele)
else:
print('else语句不会执行')
练习-密码合法判断
需求
判断登录密码hhew2383dW_fkf&E@^
是否合法。
- 密码必须是数字、字母(大小写都可以)、和下划线,否则不合法
- 如果密码合法,就输出
"密码合法"
分析 :::info
- 定义容器,保存所有的数字 字母 _
- for循环遍历密码中每一个元素
- 判断每一个元素是否合法
- 如果不合法,执行break :::
提示
:::success
字母数字下划线字符串container = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_'
:::
实现
password = 'hhew2383dW_fkfE'
# 2.定义容器:保存所有的数字 字母 _
container = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_'
# 1.for循环遍历密码中每一个元素
for ele in password:
# 2.判断每一个元素是否合法
# 每一个元素 是否在容器中 @
if ele not in container:
print('密码不合法,不可包含%s' % ele)
break
else:
# 如果执行了break,就不会再执行else,密码合法就不会执行
print('密码合法')