一、While循环
While循环的语法格式如下:
while 条件表达式 :
代码段(包含改变计数器值的语句)
while 关键词后面紧跟的条件表达式决定了循环是够进行下去。
下面用while语句实现求1~100的累加和,代码如下:
1 2 3 4 5 6 |
|
运行结果如下:
While循环的语法要点需要做的就是以下三件事:
- 1、定义计数器的初始值,这个计数器可以计数,也可以用作求解问题的数字处理。
- 2、While循环条件保证计数器在一定条件下退出循环。
- 3、循环做的事情放在循环体里,同是不要忘记计数器的叠加效果。
二、While…else…循环
While…else…的语法格式如下:
while 条件表达式 :
代码块1
改变计数器的值
else :
代码块2
这个格式比原来基本的while格式读了一个else语句,器质性流程也多了一步流程,即当while循环体正常执行完后执行else代码块中的内容。
下面用while语句实现银行卡吞卡验证,代码如下:
1 2 3 4 5 6 7 8 9 10 |
|
运行结果如下:
break用
来推出循环体,不再执行本层循环。
三、for循环
while循环和for循环用于处理不同的问题,while应用在不知道循环次数的情况下,for应用在确定循环次数的情况下。
for循环语句的格式如下:
for 临时变量 in 可迭代对象 :
循环体
执行过程就是将每一个可迭代对象中的每一个元素复制给临时变量,再执行循环体。当可迭代对象中的元素全部遍历完后for循环就停止运行。
如用for循环求1~100的累加和,代码如下:
1 2 3 4 |
|
以上代码看上去比while循环简单一些,所以变成习惯上使用for循环。
注意: Python的区间左边可以等于,右边一定不等于,即左闭右开。
range函数可以接受3个参数,range
(start,stop,step)产生一个从start开始到stop结束的一个整数序列,step是步长。
四、for…else…循环
While…else…的语法格式如下:
for 临时变量 in 可迭代对象 :
循环体
else :
代码块2
当for循环体正常执行完后执行else代码块中的内容,否则不会执行else中的代码。
如上述银行卡吞卡使用for循环就会这样写:
1 2 3 4 5 6 7 8 |
|
运行结果如下:
五、循环体结束语句
Python
的循环逻辑控制是依靠for和while
这两种语句来实现的。但是,有时不需要把循环执行完,条件合适时需要直接退出循环,这时可以使用break语句。还有一种需求,不需要退出整个循环,而是退出本次循环,可以使用continue
语句。这两个语句的区别如下:
- 1、
break
用于完全结束一个循环,跳出循环体之行循环后面的语句。 - 2、
continue
只是终止本次循环,接着还之行后面的循环。
下面经过具体实例来了解break和continue的使用:
- 循环打印奇数
如果判断是偶数,进入下一次循环,如果判断是奇数,直接打印。
1 2 3 4 |
|
运行如下:
- 循环打印闰年
循环找出2020-2051年中的第一个闰年。
1 2 3 4 |
|
运行如下:
六、嵌套循环
以打印九九乘法表为例:
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
分析以上九九乘法表的思路,从输出格式中可以看到数字是从1乘1一直到9乘9,要形成1到9两个数交叉相乘的效果,就必须依靠循环嵌套
代码如下:
1 2 3 |
|
运行结果如下:
可以看出以上代码打印的是竖向的乘法表,原因是目前的结束符是换行,修改结束符即可。现在把结束符换成“/t”制表符。
修改后的代码如下:
1 2 3 4 |
|
运行结果如下:
此时每一行的的第一个字符相等,与结果的每一列字符相等,所以输出可以将i和j互换。并且,应该是第一行只留11,第二行只留12,2*2,以此类推才能实现要求的乘法表。具体方法是当外层循环比内层循环数字小时,退出本层循环。
最终代码如下:
1 2 3 4 5 6 |
|
运行结果如下: