for循环

for循环的主要作用是遍历数据(容器))中的元素。字符串、列表等高级数据类型都属于容器,都可以通过for循环遍历

for循环的语法格式如下:

  1. for 临时变量 in 列表或字符串等可迭代对象:
  2. 执行的代码

使用for循环遍历字符串中的所有字符 :::info 需求:
打印字符串’hello world’中每一个字符 :::

代码如下:

  1. str = 'hello world'
  2. # ele普通变量 接收容器中的元素
  3. for s in str:
  4. print(s)

in和not in

in 操作符用于判断元素是否存在于容器中,如果在容器中,返回 True,否则返回 False

  1. str = 'hello'
  2. result = 'h' in str
  3. print(result)
  4. result = 'e' not in str
  5. print(result)

结果:

  1. True
  2. False

range

range() 可创建一个整数列表。range()相当于数学中的左闭右开区间(包含左,不包含右)
我们先看看数学中的区间:

全开全闭区间

  • 开区间:(1,10) 不包含1和10
  • 闭区间:[1,10] 包含1和10

半开半闭区间

  • 左开右闭区间:(1,10] 包含10不包含1
  • 左闭右开区间:[1,10) 包含1不包含10

range的定义

  1. # 定义0到10的区间(包含0,不包含10)
  2. arr = range(0, 10)

如果区间从0开始可以省略0

  1. # 定义0到10的区间(包含0,不包含10)
  2. arr = range(10)

倒序的区间定义

  1. # 定义从10到1的区间,参数分别代表 start开始, stop结束, step步长
  2. arr = range(10, 0, -1)

区间可以通过for进行遍历

  1. # 定义0到10的区间(包含0,不包含10)
  2. arr = range(0, 10)
  3. # 遍历区间
  4. for ele in arr:
  5. print(ele)

练习-水仙花数

需求

打印出所有”水仙花数”,所谓”水仙花数”是指一个三位数[100, 1000),其各位数字立方和等于该数本身。
例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

分析

:::info

  1. 遍历所有的三位数
  2. 求 百位 十位个位 立方和
  3. 判断并打印 :::

    实现

    1. for ele in range(100, 1000):
    2. # 百位
    3. hun = ele // 100
    4. # 十位
    5. ten = ele // 10 % 10
    6. # 个位
    7. single = ele % 10
    8. # 判断立方和
    9. if (hun**3 + ten**3 + single**3) == ele:
    10. print(ele)

    break和continue

    **break****continue**是专门在循环中使用的关键字
  • break:某一条件满足时,不再执行循环体中后续代码,并退出循环
  • continue:某一条件满足时,不再执行本次循环体中后续代码,但进入下一次循环判断

    break

    1. for i in range(5):
    2. if i == 3:
    3. break
    4. print(i)
    结果:
    1. 0
    2. 1
    3. 2

    continue

    1. for i in range(5):
    2. if i == 3:
    3. continue
    4. print(i)
    结果:
    1. 0
    2. 1
    3. 2
    4. 4

    循环结合else

循环也可以像if语句一样结合else

else 中的语句会在循环正常执行完(即没有通过 break或其他异常情况中断循环)的情况下执行,while循环也是如此

格式:

  1. for 变量 in 容器:
  2. 循环体代码
  3. else:
  4. 没有通过break退出循环, 循环结束后, 会执行的代码

for else,会执行else中的代码

  1. str = 'hello world'
  2. for ele in str:
  3. print(ele)
  4. else:
  5. print('执行了else语句')

for else中执行了continue,会执行else中的代码

  1. for ele in str:
  2. if ele == 'l':
  3. continue
  4. print(ele)
  5. else:
  6. print('执行了else语句')

for else中执行了break,else语句不会执行

  1. for ele in str:
  2. if ele == 'l':
  3. break
  4. print(ele)
  5. else:
  6. print('else语句不会执行')

练习-密码合法判断

需求

判断登录密码hhew2383dW_fkf&E@^是否合法。

  1. 密码必须是数字、字母(大小写都可以)、和下划线,否则不合法
  2. 如果密码合法,就输出"密码合法"

分析 :::info

  1. 定义容器,保存所有的数字 字母 _
  2. for循环遍历密码中每一个元素
  3. 判断每一个元素是否合法
  4. 如果不合法,执行break :::

提示

:::success 字母数字下划线字符串
container = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_' :::

实现

  1. password = 'hhew2383dW_fkfE'
  2. # 2.定义容器:保存所有的数字 字母 _
  3. container = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_'
  4. # 1.for循环遍历密码中每一个元素
  5. for ele in password:
  6. # 2.判断每一个元素是否合法
  7. # 每一个元素 是否在容器中 @
  8. if ele not in container:
  9. print('密码不合法,不可包含%s' % ele)
  10. break
  11. else:
  12. # 如果执行了break,就不会再执行else,密码合法就不会执行
  13. print('密码合法')