通常情况下在Python每条语句只执行一次,如果某条或某些语句需要重复执行,就要用到循环语句。循环语句允许我们执行一个语句或语句组多次,提供了各种控制结构和更复杂的执行路径。循环语句分为for循环和while循环。需要注意Python中不存在do…while…语句。
while循环用于重复执行一段代码,直到满足一定条件才停止循环。while循环的语法格式如下:
while 判断条件:
? ? 循环体
其中判断条件是一个布尔表达式,当条件为True时,循环体中的代码会被执行。如果条件为False,循环体中的代码不会被执行,整个循环会被跳过。
注意:
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
与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。
?