【Python中的循环】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

for循环用于遍历可迭代对象(如列表、元组、字符串、字典、集合等)中的每个元素,执行循环体。

基本语法 

for 变量 in 可迭代对象:
    循环体

示例 : 

# 遍历列表
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

输出 : 

apple
banana
cherry

 使用range()函数

range()函数可以生成一个整数序列,常用于for循环中。

# 使用range()函数
for i in range(5):  # 生成0到4的整数序列
    print(i)

输出 : 

0
1
2
3
4

 经典案例 :(九九乘法表)

# 九九乘法表
# for i in range(1, 10):
#     for j in range(1, i + 1):
#         print(f"{j} * {i} = {i * j}",end="  ")
#     print("")

输出: 

1 * 1 = 1  
1 * 2 = 2  2 * 2 = 4  
1 * 3 = 3  2 * 3 = 6  3 * 3 = 9  
1 * 4 = 4  2 * 4 = 8  3 * 4 = 12  4 * 4 = 16  
1 * 5 = 5  2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  5 * 5 = 25  
1 * 6 = 6  2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  5 * 6 = 30  6 * 6 = 36  
1 * 7 = 7  2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  7 * 7 = 49  
1 * 8 = 8  2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  7 * 8 = 56  8 * 8 = 64  
1 * 9 = 9  2 * 9 = 18  3 * 9 = 27  4 * 9 = 36  5 * 9 = 45  6 * 9 = 54  7 * 9 = 63  8 * 9 = 72  9 * 9 = 81  

二、while循环

while循环用于在满足某个条件时重复执行循环体,直到条件不再满足为止。

基本语法

while 条件:
    循环体

示例 :

# 使用while循环
count = 0
while count < 5:
    print(count)
    count += 1

输出 : 

0
1
2
3
4

三、 breakcontinue

  • break:用于立即终止循环,跳出循环体。

  • continue:用于跳过当前循环的剩余部分,直接进入下一次循环。

示例 : 

# 使用break
for i in range(10):
    if i == 5:
        break
    print(i)

 输出 :

0
1
2
3
4

示例 : 

# 使用continue
for i in range(10):
    if i % 2 == 0:  # 跳过偶数
        continue
    print(i)

输出 : 

1
3
5
7
9

四、 循环与else 

在Python中,循环语句可以与else语句配合使用。else块会在循环正常结束时执行(即没有被break中断)。

示例 :

# for循环与else
for i in range(5):
    if i == 10:  # 假设条件永远不会满足
        break
else:
    print("循环正常结束")

 输出 :

循环正常结束

如果循环被break中断,则else块不会执行:

# for循环与else(被break中断)
for i in range(5):
    if i == 3:
        break
else:
    print("循环正常结束")

 输出 :

(没有输出,因为循环被break中断)

while循环也可以与else配合使用,逻辑相同。

五、经典案例分析 

用for求1000以内最大的10个质数的平均数

count = 0
total = 0
for i in range(1000, 1, -1):
    is_value = True
    for j in range(2,i):
        if i % j == 0:
           # print(f"{i}不是质数")
            is_value = False
            break
    if is_value:
        total += i
        count += 1
       # print(f"{i}是质数")
        if count == 10:
            break
print(total / 10)

 输出:966.4

代码分析

  1. 变量初始化

    count = 0
    total = 0
    • count:用于计数,记录找到的质数数量。

    • total:用于累加找到的质数。

  2. 外层for循环

    for i in range(1000, 1, -1):
    • 从1000开始,递减到2,检查每个数字是否为质数。

  3. 内层for循环

    for j in range(2, i):
        if i % j == 0:
            is_value = False
            break
    • 这段代码用于判断i是否为质数。如果i能被j整除,则is_value置为False,并退出循环。

  4. 质数处理

    if is_value:
        total += i
        count += 1
        if count == 10:
            break
    • 如果i是质数,则累加到total中,并增加计数器count

    • 如果找到10个质数,则退出循环。

  5. 计算平均值

    print(total / 10)
    • 最后输出前10个质数的平均值。

用while求1000以内最大的10个质数的平均数

value = 1000
total = 0
b = 0
while value < 1001:
    count = 2
    is_prime = True
    while count < value:
        if value % count == 0:
            is_prime = False
            break
        count += 1
    if is_prime:
        b += 1
        total += value
        # print(f"{value}是质数")
        if b == 10:
            break
    value -= 1
print(total / 10)

 输出 :966.4

代码分析

  1. 变量初始化

    value = 1000
    total = 0
    b = 0
    • value:从1000开始,逐步减小,寻找质数。

    • total:用于累加找到的质数。

    • b:用于计数,记录找到的质数数量。

  2. 外层while循环

    while value < 1001:
    • 这个条件value < 1001是多余的,因为value初始化为1000,且在循环中逐渐减小,永远不会大于等于1001。可以去掉这个条件,直接用while True代替。

  3. 内层while循环

    count = 2
    is_prime = True
    while count < value:
        if value % count == 0:
            is_prime = False
            break
        count += 1
    • 这段代码用于判断value是否为质数。如果value能被count整除,则is_prime置为False,并退出循环。

  4. 质数处理

    if is_prime:
        b += 1
        total += value
        if b == 10:
            break
    • 如果value是质数,则累加到total中,并增加计数器b

    • 如果找到10个质数,则退出循环。

  5. value递减

    value -= 1
    • 每次循环结束,value减1,继续检查下一个数字。

  6. 计算平均值

    print(total / 10)
    • 最后输出前10个质数的平均值。

# python 特性写法

 用while与else的操作

求1000以内相差为6的质数对

i = 1000
value = 0
while i > 2:
    j = 2
    while j < i:
        if i % j == 0:
            break
        j += 1
    else:
        value = i - 6
        # print(i)
        s = 2
        while s < value:
            if value % s == 0:
                break
            s += 1
        else:
            if value < 7:
                break
            print(i, value)

    i -= 1

 

代码分析

  1. 变量初始化

    i = 1000
    value = 0
    • i:从1000开始,逐步减小,寻找质数。

    • value:用于存储i - 6的值。

  2. 外层while循环

    while i > 2:
    • 从1000开始,递减到3,检查每个数字是否为质数。

  3. 内层while循环(检查i是否为质数)

    j = 2
    while j < i:
        if i % j == 0:
            break
        j += 1
    else:
    • 这段代码用于判断i是否为质数。如果i能被j整除,则退出循环,否则执行else块。

  4. 检查i - 6是否为质数

    value = i - 6
    s = 2
    while s < value:
        if value % s == 0:
            break
        s += 1
    else:
        if value < 7:
            break
        print(i, value)
    • 如果i是质数,则计算value = i - 6,并检查value是否为质数。

    • 如果value是质数且大于等于7,则打印质数对(i, value)

  5. 递减i

    i -= 1
    • 每次循环结束,i减1,继续检查下一个数字。


总结

  • for循环适合遍历可迭代对象。

  • while循环适合在满足条件时重复执行。

  • break用于终止循环,continue用于跳过当前迭代。

  • 循环与else配合使用时,else块在循环正常结束时执行,但如果循环被break中断,则else块不会执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值