Python 程序设计——day6——for 循环语句

本文详细介绍了Python编程语言中的for循环,包括for...in循环、range()函数的使用,以及for循环在不同场景下的应用。文章还提到了循环控制语句continue和break,以及for循环的嵌套和与while循环的配合使用。通过实例展示了如何用for循环实现特定的功能,如遍历字符串、计算数字序列、实现九九乘法表等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、for 循环

1、for…in 循环

2、range() 语句

3、for 循环应用场景(重现 while 循环案例)

二、for 循环的嵌套应用

1、for 循环嵌套应用场景一 

2、for 循环嵌套应用场景二 

3、for 循环和 while 循环配合应用场景

三、for 循环的循环控制语句

1、continue 语句

2、break语句

四、for 循环的综合练习


        上一篇文章我们介绍了什么是循环语句以及 while 循环的用法和案例,这篇文章开始了解另一个重要的循环语句:for 循环

        for 循环是将序列的内容依次取出,所以 for 循环也被称之为遍历循环

一、for 循环

1、for…in 循环

特点:

  • for…in 循环可以遍历任何序列的项目,如一个列表或者一个字符串
  • for…in 遍历的对象必须是可迭代对象(包括字符串、列表、元组、集合和字典)
  • while 循环的循环条件是自定义的,for…in 循环无法定义循环条件
  • for…in 循环是一种“轮询”机制,是对一批内容进行“逐个处理”

语法:

for 临时变量 in 可迭代对象:
    循环体语句
[else:
    执行语句]    # 中括号部分可以省略,用法与 while 循环一致

示例:

# 遍历字符串
for i in '1234':       # i为临时变量,'1234'为待遍历的字符串
    print(i)           # 依次打印字符串中的内容
else:
    print("for循环结束")

# 遍历元组 
for i in ('AA','BB','CC','DD'):
    print(i)

# 遍历列表
for i in ['张三','李四','王五','赵六']:
    print(i)

注意:理论上来讲,for 循环无法构建无限循环,因为待处理的数据集不可能无限大

练习:

# 字符串 name = "hello world"
# 通过for循环遍历所有的L
name = "hello world"
for i in name:
    if i == "l":
        print(i)
AI解释代码:
    这段代码定义了一个字符串变量 name,值为 "hello world" 。接下来,使用 for 循环遍历字符串 name 中的每一个字符,并使用 if 条件语句判断是否等于字符 "l" 。若相等,则在控制台输出该字符 "l" 。因此,由于 name 字符串中有三个字符 "l" ,以上代码会输出三个字符 "l" 。

2、range() 语句

        for 循环本质上是遍历“序列类型”,但是,使用range 语句,可以获得一个简单的数字序列

示例:

for i in range(n):
    print(i,end='\t')
print('')
# 获得一个从0开始,到n结束的数字序列(不含n本身)
# 例如range(5),获得的数据是“0  1  2  3  4”
for i in range(n1, n2):
    print(i,end='\t')
print('')
# 获取一个从n1开始,到n2结束的数字序列(不含n2本身)
# 例如range(2,8),获得的数据是“2  3  4  5  6  7”
for i in range(n1, n2, step):
    print(i,end='\t')
print('')
# 获取一个从n1开始,到n2结束的数字序列(不含n2本身)
# step 为步长,默认为1
# 例如range(1,10,2),获取到的数据是“1  3  5  7  9”
for i in range(10, 1, -1):
    print(i,end='\t')
# 从10到1,依次打印,(不含1本身)
# range(10,1,-1),获取到的数据是“10  9  8  7  6  5  4  3  2”

3、for 循环应用场景(重现 while 循环案例)

        通过以下使用 for 循环的案例,我们可以看出 for 循环在减少代码数上具有明显的优势,但是使用场景的局限性也要比 while 明显,因为 for 循环无法定义循环条件

(1) 犯了错惹老婆生气,需要输出100次 “媳妇,我错了” 才能被原谅

for i in range(1,11):
    print('媳妇⼉,我错了')
print('谢谢媳妇儿的原谅,以后再也不犯这个错了')

(2)请计算1-100的和

sum = 0
for i in range(1,101):
    sum += i
print(sum)
AI解释代码:
    以上代码是计算1到100的和。 首先,定义一个变量 sum,初始化为 0。 使用 for 循环,循环变量 i 从1到100。 在循环体中,将i加到 sum 中。 循环结束后,输出 sum 的值,即1到100之间所有整数的和。 最终输出的结果是5050。

(3)请计算1-100偶数和

sum = 0
for i in range(0,101,2):
    sum += i
print(sum)
AI解释代码:
    这段代码利用 for 循环将 0 到 100 中所有的偶数相加并输出结果。具体来说,代码首先定义了一个 sum 变量作为计数器,然后利用 range 函数生成一个从 0 到 100 的序列,其中步长为 2,也就是只包含偶数。在循环中,每遍历一个偶数,都将其加到计数器 sum 上。最后输出计数器 sum 的值。结果为 2550。

(4)请计算水仙花数

n1 = 0; n2 = 0; n3 = 0
for i in range(100, 1000):
    n1 = i // 100
    n2 = (i - n1 * 100) // 10
    n3 = i - n1 * 100 - n2 * 10
    if i == (n1**3+n2**3+n3**3):
        print(i,end="\t")
AI解释代码:
    这段代码的目的是查找三位数中所有符合“水仙花数”定义的数,即一个三位数各个位上数字的立方和等于这个三位数本身。
    代码通过一个for循环遍历从100到999之间的所有三位数,然后通过整除和取余运算依次计算出这个三位数的百位数、十位数和个位数。然后,代码将这三个数的立方和计算出来,判断是否等于这个三位数本身,若是则输出这个三位数。
    需要注意的是,与while循环不同的是,每次循环后不需要i+=1语句,因为for循环会自动遍历下一个数。

二、for 循环的嵌套应用

        执行流程:当内部 for 循环执行完成之后,再执行下⼀次外部 for 循环

1、for 循环嵌套应用场景一 

        和女朋友闹矛盾生气了,为了哄女朋友,你决定每天道歉一次 ,并买三束鲜花 ,计划总共持续10天 。当你在第四天,买了第2束花后,女朋友不生气了,整个循环都会退出

for i in range(1,11):
    for j in range(1,4):
        # print('道歉第{}天,买了第{}束花'.format(i,j))
        if i == 4 and j == 2:
            break
    if i == 4:
        print("女朋友不生气了")
        break
AI解释代码:
    以上代码是一个嵌套循环,外层循环变量为 i,内层循环变量为 j,分别从 1 开始循环到 10 和 3。在内层循环中,如果 i 等于 4 并且 j 等于 2,就会执行 break 语句跳出内层循环。 在外层循环中,如果 i 等于 4,则会输出“女朋友不生气了”并执行 break 语句跳出外层循环,结束程序。 如果没有 break 语句,代码会一直循环执行,输出“道歉第i天,买了第j束花”,直到 i 循环到 10 结束为止。

2、for 循环嵌套应用场景二 

        使用 if 循环编写一个99乘法表

for i in range(1,10):
    for j in range(1,10):
        if j <= i:
            print('{}*{}={}'.format(j,i,i*j),end='\t')
            j += 1
    print('')
    i += 1
AI解释代码:
    这段代码是一个简单的九九乘法表的程序,它的执行过程如下:
    第1行代码:使用 for 循环对变量 i 进行遍历,范围从1到9。
    第2行代码:使用 for 循环对变量 j 进行遍历,范围从1到9。
    第3行代码:对 j 和 i 进行判断,如果 j 小于等于 i,则执行第4行代码。
    第4行代码:输出 i 和 j 的乘积 i*j,并用 end='\t' 控制输出格式,使结果用制表符分隔。并且将 j 加 1。
    第5行代码:执行换行操作。
    第6行代码:将 i 加 1。
    通过这段代码的嵌套循环,可以输出一个完整的九九乘法表。

3、for 循环和 while 循环配合应用场景

        和女朋友吵架,每天道歉10遍,持续5天

for i in range(1,6):
    print(f"这是我道歉的第{i}天")
    j = 1
    while j <= 10:
        print(f"老婆,我错了,这是我今天的第{j}次道歉")
        j += 1
    print("老婆,我明天继续道歉")
AI解释代码:
    以上代码是一个Python程序,使用了一个for循环和一个while循环,输出了一段道歉的话语。
    首先,for循环将变量i从1到5遍历,每次循环执行以下操作:
        1、使用f-string输出第i天的道歉语句。
        2、初始化变量j为1。
        3、进入while循环,当j小于等于10时,执行以下操作:
            · 使用f-string输出第j次道歉的话语。
            · 将j加1。
        4、跳出while循环后,输出一句明天继续道歉的话语。
    这段代码的意图是要道歉的人每天都道歉10次,连续道歉5天。

三、for 循环的循环控制语句

        while 循环和 for 循环都是重复性的执行特定的操作,在这个过程中,会出现一些其他情况,让我们不得不

  • 跳过这次循环,进入下一次循环(continue)

  • 终止当前循环(break)

1、continue 语句

        中断本次循环,进入下一次循环

示例:

# 碰见3的倍数直接跳过
for i in range(1,10):	# 遍历出1~9
    if i % 3 == 0:		# 判断i是否为3的倍数
        continue		# 满足条件直接跳过
    print(i)			# 打印出其余的数字
AI解释代码:
    以上代码是一个简单的循环控制语句示例,其主要功能是遍历出1~9之间的数字,但是碰见3的倍数则直接跳过,不再执行后续的代码。
    首先,在第1行代码中定义for循环,将遍历范围设置为1~9。在每一次循环中,会检测变量i是否为3的倍数,即判断i % 3是否等于0。如果等于0,说明i是3的倍数,满足条件,因此执行第4行代码中的continue语句,直接跳过本次循环,开始下一次循环。
    如果i不是3的倍数,则在第6行代码中打印出当前的i值,然后开始下一次循环,直到遍历完1~9之间的所有数字。因此,在本例中,最终输出的数字为:1、2、4、5、7、8。

2、break语句

        终止循环,结束当前(当层)循环

示例:

# 当交通工具的最高时速超过300km/h就停止
li = ["自行车","电瓶车","小轿车","高铁","飞机","火箭","卫星"]
for i in li:
    if i == "高铁":
        print("高铁最高时速超过300km/h了")
        break
    print(f"{i}的最高时速不到300km/h")
AI解释代码:
    以上代码是一个简单的Python程序,程序运行时会打印出每一种交通工具的最高时速是否超过300km/h,如果有一种交通工具的最高时速超过了300km/h,程序就会停止打印。
    具体来说,该程序首先定义了一个列表li,列表中包含了七种交通工具:自行车、电瓶车、小轿车、高铁、飞机、火箭、卫星。然后,程序使用for循环遍历整个列表,对于每个元素,打印它的最高时速。如果遍历到的元素是“高铁”,程序就会输出一条提示信息,表明高铁的最高时速已经超过了300km/h,并使用break语句退出循环。如果没有遍历到“高铁”,程序就会输出一条类似“自行车的最高时速不到300km/h”的信息。
    因此,当运行以上代码时,我们可以看到以下输出:
# 自行车的最高时速不到300km/h
# 电瓶车的最高时速不到300km/h
# 小轿车的最高时速不到300km/h
# 高铁最高时速超过300km/h了

四、for 循环的综合练习

        请使用 for 循环做一个猜数字游戏

要求:1、从1-100生成一个随机数

           2、总共有5次机会

           3、若中途猜对,循环就要终止

提示:这里会import(调用)到一个 random(随机)模块

import random
# 此处的number即为1-100的随机数
number = random.randint(1, 100)
print(number)

示例:

import random
print('这是一个猜100以内随机数的游戏,你有5次机会')
num1 = random.randint(1,100)
print(num1)
for i in range(1,5):
    num2 = int(input('请输入你要猜的数:'))
    if num2 > num1:
        print('你猜大了,请继续')
    if num2 < num1:
        print('你猜小了,请继续')
        i += 1
    if num2 == num1:
        print('恭喜你猜对了!')
        break
if num2 != num1:
    num3 = int(input('最后一次机会了:'))
    if num3 != num1:
        print('游戏结束,该随机数为{}'.format(num1))
    else:
        print('恭喜你猜对了!')
AI解释代码:
    以上代码是一个猜数游戏的Python代码,具体解释如下:
    1、通过import random引入Python的随机数模块。
    2、打印出游戏说明和规则,随机生成一个1到100之间的整数并赋值给num1。
    3、进入for循环,循环4次,每次猜测一个数。
    4、通过input()函数获取玩家所猜测的数,通过int()将其转换为整数并赋值给num2。
    5、判断num2与num1的大小关系,如果num2大于num1则打印“你猜大了,请继续”,如果num2小于num1则打印“你猜小了,请继续”,如果num2等于num1则打印“恭喜你猜对了!”并跳出循环。
    6、如果猜测4次后仍未猜对,则提供最后一次机会,通过input()获取玩家所猜测的数并赋值给num3。
    7、判断num3与num1是否相等,如果不相等则打印“游戏结束,该随机数为[num1]”,如果相等则打印“恭喜你猜对了!”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值