python——for循环

195 阅读4分钟

for...in...循环:

也称为遍历循环,可迭代循环。for循环可以遍历任何序列的项目,如一个列表或者一个字符串。 for循环的遍历对象必须为可迭代对象。 for循环也是一种 “轮询” 机制,是对一批内容进行 “逐个处理”

思考:当你去ATM机取钱时,如果有多个卡要去,那是不是要对每张卡都进行操作呢?
你的操作流程是什么呢?

for循环流程.png

上图描述了去取钱的一系列操作,这就是对银行卡的遍历。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)
# 从101,依次打印,(不含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()