Python入门知识点分享——(十二)for循环与while循环

发布时间:2023年12月30日

通常情况下在Python每条语句只执行一次,如果某条或某些语句需要重复执行,就要用到循环语句。循环语句允许我们执行一个语句或语句组多次,提供了各种控制结构和更复杂的执行路径。循环语句分为for循环和while循环。需要注意Python中不存在do…while…语句。

while

while循环用于重复执行一段代码,直到满足一定条件才停止循环。while循环的语法格式如下:
while 判断条件:
? ? 循环体

其中判断条件是一个布尔表达式,当条件为True时,循环体中的代码会被执行。如果条件为False,循环体中的代码不会被执行,整个循环会被跳过。

注意:

  1. input方式得到的是一个字符串,如果要进行比较的话要先转换成数字数据
  2. 如果判断条件始终为True的话会一直执行循环体代码块,一般要加上能改变判断结果的语句
data = input("请输入一个数字")
while int(data) > 0:
    print((str(data) + "大于0符合要求"))
    data = int(data) - 1
print("不大于0不符合要求")
请输入一个数字5
5大于0符合要求
4大于0符合要求
3大于0符合要求
2大于0符合要求
1大于0符合要求
不大于0不符合要求

请输入一个数字0
不大于0不符合要求

除了判断条件为False,while 语句时还有另外两个重要的命令 continue、break 用于跳出循环。continue 用于跳过该次循环,break 则是用于退出整个循环,使用时需要和if条件语句搭配。

a = 0
while a < 5:
    a += 1
    if a % 2 != 0:
        continue
    print(a)
# 奇数时跳过输出
b = 1
while b > 0:
    b += 1
    if b > 10:  # 当b大于10时跳出循环
        break
    print(b, "大于0符合要求")
   
2
4
2 大于0符合要求
3 大于0符合要求
4 大于0符合要求
5 大于0符合要求
6 大于0符合要求
7 大于0符合要求
8 大于0符合要求
9 大于0符合要求
10 大于0符合要求

无论是continue还是break,缩进都要在if的嵌套里,意义上对while起作用,但是书写格式上不能与if平齐。

如果要求始终执行while里的代码块,通常的手段是while 1,可称为无限循环或者“永真”,此类代码较多的应用可以参考我另一个专栏《单片机原理与应用》,在51单片机启动时常常被设定为始终执行某个操作。

while 1:
    print("程序正常运行")
程序正常运行
程序正常运行
程序正常运行
...

while还能与else配合使用,用于表达两种不同的情况,在缩进时else与while平齐。由于else本身不具备循环的功能,可以说是起到了和break一样结束循环的作用。

a = 0
while a < 5:
    print(a, "<5")
    a += 1
else:
    print(a, ">=5")
0 <5
1 <5
2 <5
3 <5
4 <5
5 >=5

for

与C++不同,Python中的for循环并不能使用for i < 5这样的判断,而是用来遍历可迭代对象(如列表、元组、字符串等)中的每个元素,并对每个元素执行相同的操作。for循环的语法格式如下:
for 变量 in 可迭代对象:
? ? 循环体

其中变量是用来存储当前迭代到的元素的变量,名称可以任意设置,数据类型随元素的变化而变化

?

list1 = [15, "_hello_", 3+9j]
for element in list1:
    print(element, type(element))
15 <class 'int'>
_hello_ <class 'str'>
(3+9j) <class 'complex'>

此外,Python的for循环还可以和range函数一起使用,用来生成一个指定范围的整数序列,然后对序列中的每个整数执行相同的操作,常用于指定次数执行某一操作。另外range表示为(10,20)时不包含后面参数本身,此例中表示10-19。

list1 = [15, "_hello_", 3+9j]
for aa in range(5):
    print(list1)
[15, '_hello_', (3+9j)]
[15, '_hello_', (3+9j)]
[15, '_hello_', (3+9j)]
[15, '_hello_', (3+9j)]
[15, '_hello_', (3+9j)]

for循环中也可以使用else语句,格式和效果同while,区别是for循环达到次数后就会自动结束,所以else常用在多层循环嵌套当中。

for num in range(10, 20):  # 迭代 10 到 20 之间的数字
    for i in range(2, num):  # 根据因子迭代
        if num % i == 0:  # 确定第一个因子
            j = num / i  # 计算第二个因子
            print('%d 等于 %d * %d' % (num, i, j))
            break  # 跳出当前循环
    else:  # 循环的 else 部分
        print('%d 是一个质数' % num)
10 等于 2 * 5
11 是一个质数
12 等于 2 * 6
13 是一个质数
14 等于 2 * 7
15 等于 3 * 5
16 等于 2 * 8
17 是一个质数
18 等于 2 * 9
19 是一个质数

这块内容有些难以理解,可以参考Python for 循环语句 | 菜鸟教程 (runoob.com)

for循环和while循环也可以组合使用,要注意缩进和嵌套关系,以及在适当时候使用break打断循环。

for i in range(0, 20):
    while 10 < i and i < 20:
        print(i, "是两位数")
        break
    else:
        print(i, "是个位数")
0 是个位数
1 是个位数
2 是个位数
3 是个位数
4 是个位数
5 是个位数
6 是个位数
7 是个位数
8 是个位数
9 是个位数
10 是个位数
11 是两位数
12 是两位数
13 是两位数
14 是两位数
15 是两位数
16 是两位数
17 是两位数
18 是两位数
19 是两位数

?谢谢大家,两种循环方式就介绍到这里。祝大家学习进步,不遇bug。

?

文章来源:https://blog.csdn.net/qq_62530454/article/details/135292459
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。