for循环
一、for...in...循环
(一)for循环的定义和逻辑图
- for循环,被称为遍历循环,也被称为迭代循环;如Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。而迭代循环常用的迭代对象包括:集合数据类型,如list、tuple、dict、set、str等。
- for-in遍历的对象必须是可迭代对象。
- while循环被称为条件循环,而循环条件是可以自定义的。for循环无法定义循环条件。
- for循环是一种"轮询"机制,是对一批内容进行"逐个处理"。
如图所示
(二)for . in .循环语句
- for i(临时变量) in 待处理数据集:
- 重复执行代码。
- 理论上来讲,for循环无法构建无限循(待处理的数据集不可能无限大)。
num = "hello world" for i in "hello world": print(i) ----------------------- h e l l o w o r l d
- 选出想得到的内容,进行依次取出。
# 字符串 name = "hello python i love you" # 通过for循环遍历所有的o name = "hello python i love you" for i in name: if i == "o": print(i,end="\t") --------------------------------------------- o o o o
- 如果迭代对象为列表,而列表中的数据有字符串形式,将直接整个打印字符串。
li = [1,2,3,4,"hello","张三"] for i in li: print(i) ----------------------------------- 1 2 3 4 hello 张三
二、range()语句
- for循环本质上是遍历“序列类型”,但是,使用range语句,可以获得一个简单的数字序列
(一)语法
- 获得一个从0开始,到num结束的数字序列(不含num本身)
- range(num)
# 列如range(5),获得的数据是[0,1,2,3,4] for i in range(5): print(i) ------------------------- 0 1 2 3 4
- 获取一个从num1开始,到num2结束的数字序列(不含num2本身)
- range(num1,num2)
# 列如range(2,8),获得的数据是[2,3,4,5,6,7] for i in range(2,8): print(i) --------------------------- 2 3 4 5 6 7
- 获取一个从num1开始,到num2结束的数字序列(不含num2本身)
- step 为步长,默认为1
- range(num1,num2,step)
# 列如range(1,10,2),获取到的数据是[1,3,5,7,9] for i in range(1,10,2): print(i) ----------------------------------- 1 3 5 7 9
- 倒序打印
- num1 = 10
- num2 = 0
- range(num1,num2,-1)
# 从10到1,依次打印,(不含num2本身) #range(10,0,-1),获取到的数据是[10,9,8,7,6,5,4,3,2,1] for i in range(10,0,-1) print(i) ------------------------------ 10 9 8 7 6 5 4 3 2 1
(二)实例
- 用for循环得出,取1到300的奇数且7的倍数不要
result = 0 for i in range(1,301): if i % 2 !=0 and i % 7 !=0: result+=i print(result) ---------------------------------- 19413
三、for循环的嵌套应用
- 包含外循环和内循环
实例
# 每天上班时,说3遍我是要成为海贼王的男人! # 一周说上五天。 for i in range(1,6): print(f"今天是第{i}天上班") for k in range(1,4): print(f"第{k}遍,我是要成为海贼王的男人!") -------------------------------------------------- 今天是第1天上班 第1遍,我是要成为海贼王的男人! 第2遍,我是要成为海贼王的男人! 第3遍,我是要成为海贼王的男人! 今天是第2天上班 第1遍,我是要成为海贼王的男人! 第2遍,我是要成为海贼王的男人! 第3遍,我是要成为海贼王的男人! 今天是第3天上班 第1遍,我是要成为海贼王的男人! 第2遍,我是要成为海贼王的男人! 第3遍,我是要成为海贼王的男人! 今天是第4天上班 第1遍,我是要成为海贼王的男人! 第2遍,我是要成为海贼王的男人! 第3遍,我是要成为海贼王的男人! 今天是第5天上班 第1遍,我是要成为海贼王的男人! 第2遍,我是要成为海贼王的男人! 第3遍,我是要成为海贼王的男人!
四、break和continue
(一)break
- break直接退出当前循环
实例
# 当宝马刷完后直接停止,不刷后面的奔驰 li = ["宝马","宝马","宝马","宝马","奔驰","奔驰","奔驰"] for i in li: print(i) if i =="奔驰": print("碰到奔驰了,不再刷了") break print("正在刷宝马") ------------------------------------- 宝马 正在刷宝马 宝马 正在刷宝马 宝马 正在刷宝马 宝马 正在刷宝马 奔驰 碰到奔驰了,不再刷了
(二)continue
- continue之后的代码不会执行
for i in range(1,11): if i % 2 == 0: print("这句话可以执行") continue print("这句话不会执行") print(i) ----------------------------------- 1 这句话可以执行 3 这句话可以执行 5 这句话可以执行 7 这句话可以执行 9 这句话可以执行
五、while循环和for循环的区别
(一)while循环是条件循环
- 以布尔值(True)为例,给定条件。
- while True: 死循环
- 在猜数游戏中为例,给定一个条件,不达到就进行无限循环。
# 指定三次机会 import random number = random.randint(1,100) cont = 0 while True: cont+=1 num = int(input("请输入一个数字:")) if num > number: print("猜大了") if num < number: print("猜小了") if num == number: print("猜对了") break if cont == 3: break
- 若进行条件循环,没给定条件,会呈增长式快速占用内存,导致卡机。
- 注意:死亡代码,谨慎运行。
while True: print("大家好,给大家表演一个死机")
(二)for循环是遍历循环和迭代循环
- 遍历循环:即for-in 给定遍历的对象,对对象进行逐个处理。而给定的对象必须是迭代对象。
如
ti = "one piece" for i in ti: print(i) ----------------------- o n e p i e c e
- 迭代循环:其常用迭代对象多为list、tuple、dict、set、str等。
tuple1 = (1,2,3,4,"hello","张三") for i in tuple1: print(i) ------------------------------------ 1 2 3 4 hello 张三