反复做同一件事的情况称为循环。循环主要有以下两种类型:
(1)重复一定次数的循环,称为计次循环,如for循环。
(2)一直重复直到条件不满足时才结束的循环,称为条件循环。只要条件为真,这种循环会一直持续下去,如while循环。
while循环是通过一个条件来控制是否要继续反复执行循环体中的语句。其语法格式如下:
while条件表达式: 循环体
循环体是指一组被重复执行的语句。当条件表达式的返回值为真时,则执行循环体中的语句,执行完毕后,重新判断条件表达式的返回值,直到表达式返回的结果为假时,退出循环。
在使用while循环语句时,一定不要忘记添加将循环语句变为False的代码,否则,将产生死循环。如下是一段死循环的代码示例:
i=0 while True: i=i+1 print(i)
上述代码会一直在循环中打印i的值,因为没有将循环语句变为False的代码,因而不会退出循环,成为死循环。
for循环是一个依次重复执行的循环,通常适用于枚举、遍历序列,以及迭代对象中的元素。其语法格式如下:
for迭代对象in对象: 循环体
其中,迭代变量用于保存读取出的值;对象为要遍历或迭代的对象,该对象可以是任何有序的序列对象,如字符串、列表和元组等;循环体为一组被重复执行的语句。
在使用for循环时,最基本的应用就是进行数值循环。例如,想要实现从1到100的累加,可以通过下面的代码实现:
print('计算1+2+3+...+100的结果为:') result=0 for I in range(101): result+=1 print(result)
在上面的代码中,使用了range()函数,该函数是Python的内置函数,用于生成一系列连续的整数,主要用于for循环语句中,其语法格式如下:
range(start,end,step)
参数说明:
● start:用于指定计数的起始值,可以省略,如果省略则从0开始。
● end:用于指定计数的结束值(但不包括该值,如range(7)得到的值为0~6,不包括7),不能省略。当range()函数中只有一个参数时,即表示指定计数的结束值。
● step:用于指定步长,即两个数之间的间隔,可以省略,如果省略则表示步长为1。例如,range(1,5)将得到1、2、3、4。
例如,使用下面的for循环语句输出10以内的所有奇数:
for I in range(1,10,2): print(I,end='')
关于for语句的一个常见错误就是for语句后面未加冒号,例如下面的代码:
for number in range(1,100)
运行后,会产生invalid syntax的错误,解决办法就是在第一行代码的结尾处添加冒号。
for number in range(1,100):
使用for循环语句除了可以循环数值之外,还可以逐个遍历字符串。
【例2.2】将横向显示的字符串转换为纵向显示。
string='我相信我可以' print(string)# 横向显示 for ch in string: print(ch)#纵向显示
上述代码运行结果如图2.3所示。
图2.3 遍历字符串结果
在Python中,允许在一个循环体中嵌入另一个循环,这称为循环嵌套。在Python中,for循环和while循环都可以进行循环嵌套。
(1)在while循环中套用while循环的格式如下:
while条件表达式1: while条件表达式2: 循环体2 循环体1
(2)在for循环中套用for循环的格式如下:
for 迭代对象1 in 对象1: for 迭代对象2 in 对象2: 循环体2 循环体1
(3)在while循环中套用for循环的格式如下:
while 条件表达式: for 迭代对象 in 对象: 循环体2 循环体1
(4)在for循环中套用while循环的格式如下:
for 迭代对象 in 对象: while 条件表达式: 循环体2 循环体1
除了上面介绍的4种循环嵌套格式外,还可以实现更多层的嵌套。
【例2.3】使用嵌套的for循环打印九九乘法表。
# 外层循环,i从1到9 for i in range(1, 10): # 内层循环,j从1到i(包括i) for j in range(1, i + 1): # 打印乘法表的每一项,格式为:j*i=i*j,中间用制表符分隔 print(str(j) + "*" + str(i) + "=" + str(i * j) + "\t", end="") # 每行打印完毕后换行 print("")
上述代码运行结果如图2.4所示。
图2.4 乘法表结果