Python 循环结构详解
前言:
在编写代码时如果能够简化一个程序,把重复的代码形成公共部分,利用语法来控制,对代码进行循环往复的执行,这就形成了循环结构逻辑。
一、while循环
while循环的语法格式如下:
while 条件表达式 :
代码段(包含改变计数器值的语句)
while 关键词后面紧跟的条件表达式决定了循环是够进行下去。
下面用while语句实现求1~100的累加和,代码如下:
count = 1 #计数器 sum0 = 0 #统计和值,初始值为0 while count <= 100 : sum0 += count count += 1 print(sum0)
运行结果如下:
while循环的语法要点需要做的就是以下三件事:
- 1、定义计数器的初始值,这个计数器可以计数,也可以用作求解问题的数字处理。
- 2、while循环条件保证计数器在一定条件下退出循环。
- 3、循环做的事情放在循环体里,同是不要忘记计数器的叠加效果。
二、while…else…循环
while…else…的语法格式如下:
while 条件表达式 :
代码块1
改变计数器的值
else :
代码块2
这个格式比原来基本的while格式读了一个else语句,器质性流程也多了一步流程,即当while循环体正常执行完后执行else代码块中的内容。
下面用while语句实现银行卡吞卡验证,代码如下:
count = 1 password = input("输入密码:") while count < 3 : if password == "000000" : print("密码正确,您可以取款了") break else : input("密码错误,请再一次输入密码:") count += 1 else: print("密码错误,卡被吞")
运行结果如下:
break用
来推出循环体,不再执行本层循环。
三、for循环
while循环和for循环用于处理不同的问题,while应用在不知道循环次数的情况下,for应用在确定循环次数的情况下。
for循环语句的格式如下:
for 临时变量 in 可迭代对象 :
循环体
执行过程就是将每一个可迭代对象中的每一个元素复制给临时变量,再执行循环体。当可迭代对象中的元素全部遍历完后for循环就停止运行。
如用for循环求1~100的累加和,代码如下:
sum0 = 0 for count in range(1,101,1) : sum0 += count print(sum0)
以上代码看上去比while循环简单一些,所以变成习惯上使用for循环。
注意: python的区间左边可以等于,右边一定不等于,即左闭右开。
range函数可以接受3个参数,range
(start,stop,step)产生一个从start开始到stop结束的一个整数序列,step是步长。
四、for…else…循环
while…else…的语法格式如下:
for 临时变量 in 可迭代对象 :
循环体
else :
代码块2
当for循环体正常执行完后执行else代码块中的内容,否则不会执行else中的代码。
如上述银行卡吞卡使用for循环就会这样写:
password = input("输入密码:") for i in range(1,3,1) : if password == "000000" : print("密码正确,您可以取款了") break else : input("密码错误,请再一次输入密码:") else: print("密码错误,卡被吞")
运行结果如下:
五、循环体结束语句
python
的循环逻辑控制是依靠for和while
这两种语句来实现的。但是,有时不需要把循环执行完,条件合适时需要直接退出循环,这时可以使用break语句。还有一种需求,不需要退出整个循环,而是退出本次循环,可以使用continue
语句。这两个语句的区别如下:
- 1、
break
用于完全结束一个循环,跳出循环体之行循环后面的语句。 - 2、
continue
只是终止本次循环,接着还之行后面的循环。
下面经过具体实例来了解break和continue的使用:
- 循环打印奇数
如果判断是偶数,进入下一次循环,如果判断是奇数,直接打印。
for i in range(1,11) : if i%2==0 : continue print(i)
运行如下:
- 循环打印闰年
循环找出2020-2051年中的第一个闰年。
for year in range(2020,2051) : if year%4==0 and year%100!=0 or year%400==0 : print(year) break
运行如下:
六、嵌套循环
以打印九九乘法表为例:
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两个数交叉相乘的效果,就必须依靠循环嵌套
代码如下:
for i in range(1,10) : for j in range(1,10) : print("%d*%d=%d"%(i,j,i*j))
运行结果如下:
可以看出以上代码打印的是竖向的乘法表,原因是目前的结束符是换行,修改结束符即可。现在把结束符换成“/t”制表符。
修改后的代码如下:
for i in range(1,10) : for j in range(1,10) : print("%d*%d=%d"%(i,j,i*j),end="\t") print()
运行结果如下:
此时每一行的的第一个字符相等,与结果的每一列字符相等,所以输出可以将i和j互换。并且,应该是第一行只留11,第二行只留12,2*2,以此类推才能实现要求的乘法表。具体方法是当外层循环比内层循环数字小时,退出本层循环。
最终代码如下:
for j in range(1,10) : for i in range(1,10) : if i > j : continue print("%d * %d = %d"%(i,j,i*j),end="\t") print()
运行结果如下:
到此这篇关于python 循环结构详解的文章就介绍到这了,更多相关python 循环结构内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
上一篇: 如果你喜欢喝红酒,这些红酒配餐你不能不懂
下一篇: 详解tensorflow之过拟合问题实战