for...in...循环:
也称为遍历循环,可迭代循环。for循环可以遍历任何序列的项目,如一个列表或者一个字符串。 for循环的遍历对象必须为可迭代对象。 for循环也是一种 “轮询” 机制,是对一批内容进行 “逐个处理”
思考:当你去ATM机取钱时,如果有多个卡要去,那是不是要对每张卡都进行操作呢?
你的操作流程是什么呢?
上图描述了去取钱的一系列操作,这就是对银行卡的遍历。for循环中的也是如此,对提取出来的每一个元素进行操作。
for循环语句:
for 临时变量 in 数据集:
执行代码
#注:数据集必须是可迭代类型,且理论上来讲,for循环无法构建无限循环(待处理的数据集不可能无限大)
实例:
#遍历字符串
var1 = "hello world!"
for i in var1:
print(f"{i}")
#遍历列表:
list1=["坤哥","唱歌","跳舞","rap","篮球"]
for i in list1:
print(i)
# 遍历字符串,统计字符串中包含几个“o”.
var2 = "hello world python i love you"
number = 0
for i in var2:
if i == "o":
number += 1
print(f"'o'的数量为:{number}")
range()语句:
for循环本质上是遍历 “序列类型” ,但是,使用range语句,可以获得一个简单的数字序列
range(num)
# 获得一个从0开始,到num结束的数字序列(不含num本身)
# 例如range(5),获得的数据是[0,1,2,3,4]
range(num1,num2)
# 获取一个从num1开始,到num2结束的数字序列(不含num2本身)
# 例如range(2,8),获得的数据是[2,3,4,5,6,7]
range(num1,num2,step)
# 获取一个从num1开始,到num2结束的数字序列(不含num2本身)
# step 为步长,默认为1
# 例如range(1,10,2),获取到的数据是[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]
实例:
# 输出0~9
for i in range(10):
print(i)
# 输出1~100
for i in range(1, 101):
print(i)
# 输出1~100内的奇数
for i in range(1, 100, 2):
print(i)
# 求1~100内,奇数的和
result = 0
for i in range(1,100,2):
result += i
print(f"1~100内奇数的和为:{result}")
for循环嵌套:
和while循环嵌套一样,在for循环下在写循环。
思考:和⼥朋友闹⽭盾⽣⽓了,⼥朋友说:道歉,说10遍“媳妇⼉,我错了”,还不够,还要做家务,而且持续三天,用for循环怎么写?
#for循环
for i in range(1, 4):
for j in range(1, 11):
print(f"媳妇儿,我错了,第{j}次道歉,这是我做的第{i}天的家务")
#for循环可与while循环交替使用:
for i in range(1,4):
print(f"这是我第{i}天的道歉")
j = 1
while j<=10:
print(f"老婆,我错了,这是我今天的第{j}次道歉")
j+=1
print(f"老婆,第{i}天的道歉结束。。。")
break和continue
while循环和for循环都是重复性的执行特定的操作,在这个过程中,会出现一些其他情况,让我们不得不
- 跳过这次循环,进入下一次循环
- 终止当前循环 这与while中的用法一致,具体意思可看while循环那篇文章。
实例:
# 当马自达刷完后直接停止,因为后面是劳斯莱斯
li = ["马自达","马自达","马自达","劳斯莱斯","劳斯莱斯","劳斯莱斯","劳斯莱斯"]
for i in li:
if i == "劳斯莱斯":
print("碰见劳斯莱斯了")
break
print("正在刷马自达。。。")
# 碰见7的倍数直接跳过
for i in range(100): # 遍历出0~99
if i % 7 == 0: # 判断i是7的倍数
continue # 满足条件直接跳过
print(i) # 打印出其余的数字
练习:
用for循环成功输出:1-100,素数的和 (结果:1060)
# 方法一
result = 0
for i in range(1, 100):
number = 0 # 统计1到100内每个元素的公因数数量
for j in range(1, i + 1):
if i % j == 0:
number += 1
if number == 2: # 若公因数为二,表示只有1和它本身为它的公因数,则为素数
result += i # 对素数进行相加
print(result)
方法二
result = 0
for i in range(2, 101):
for j in range(2, i):
if i == 2:
result += 2
if i % j == 0:
break
else:
result += i
print(result)
用for循环输出九九乘法表
for i in range(1, 10):
for j in range(1, i+1):
print(f"{j}X{i}={j * i}", end=" ")
print()