网站首页 > 基础教程 正文
这篇文章我们将介绍一下for循环的使用,以及通过for循环学习一下break、continue和else子句的使用,如果大家对循环掌握得不是很扎实,可以先看一下《Python的while语句用法介绍 》,对循环有一定的认识之后,循序渐进的学习才更容易掌握。本文章使用的环境是:Windows 7 + Python 2.7.17 + PyCharm Community Edition 2016.1.5
我们通过一个小例子来看一下for的用法。假定有一个小公司,我们想计算一下全公司有多少个员工姓"张"。源代码如下:
执行结果如下:
雇员列表employee_list是公司所有员工的姓名;family_name是指要搜索的姓,比如我们这个例子中,是要搜索全公司所有姓"张"的员工;employee_num是一个计数器,代表有多少个姓"张"的员工;
这个for循环将迭代整个employee_list,要特别注意一下本行的最后要以冒号结尾,for循环的语句块都要进行缩进,通过缩进对齐确定哪些语句是循环要执行的语句。这一点是和C/C++语言完全不同的,大家要注意。我们看到在这个实例中,如果找到一个姓"张"的同事,就会给计数器employ_num加1。
这里有一个小技术点就是find函数,在这里我们通过find函数在一个字符串(employee_name)中查找一个子串(family_name),如果能够找到,则返回子串的位置数值,如果找不到,则返回-1,所以当返回值不等于-1时,我们给计数器employee_num加1
当循环结束后,我们通过计数器(employee_num)来判断一下是否找到了这样的人,如果找到了,则employee_num一定不会再是初始值0,所以我们根据判断结果是否为0,将对应的结果显示在控制台上,反馈给用户。
通过这个例子,我们看到了for循环的基本用法,下面我们再增加一些技术要点。这次我们在雇员列表employee_list中,查找一下有没有叫"张2"的员工。
在这个实例中,如果找到了这名员工,程序将使用break语句跳出循环,而不需要从头到尾迭代完。如果从头到尾迭代完也没有找到的话,则会执行else子句,这里的else子句从缩进上可以看出,是与for语句对齐的,所以它是与for配对使用的,而不是与if配对使用的。我们这个程序的执行效果如下,说明"张2"是找到了。
break语句的含义是当程序执行此语句时,将跳出当前循环,开始执行整个循环之后的语句。与之相对应的是continue语句,其含义是当程序执行此语句时,将跳出此语句之后循环体中要执行的语句,同时继续迭代下一个变量,继续循环。
说起来比较抽象,我们看一个关于continue的实例吧,还是上面的这个小公司,现在要统计一下姓王的同事的人数,上面的例子我们统计的是姓张的同事,姓张的人太少了,效果不好,这回咱们统计姓王的。可是现在有一个小问题,有一个叫"王4"的大哥,他这周正在办理退休手续,所以咱们统计的时候,就要把他剔除出去,不要计算他了。那么程序如下:
在这个实例中,我们增加了一个判断,如果雇员姓名employee_name是"王4",则continue,这样循环就不会再执行下面的加1的语句,并且再次返回循环体的开头,开始下一次循环,它并没有像break一样跳出循环体。所以最后的执行结果就是7个姓王的同事,只计算了6个。
通过上面的3个实例,我们讲解了一下for循环,break,continue语句和else子句的使用。大家可以自已尝试着把程序写一遍,感受一下这些技术要点。
猜你喜欢
- 2024-10-19 C语言中的`for`关键字是一种循环控制结构
- 2024-10-19 写给所有人的编程思维-循环篇(for循环)
- 2024-10-19 在PLC编程中,循环语句FOR和WHILE怎么选?
- 2024-10-19 C语言for循环基本流程 c语言for循环程序
- 2024-10-19 C++20尝鲜:基于范围for c++ 范围for
- 2024-10-19 BAT批处理命令之for bat文件中for用法
- 2024-10-19 C语言for循环解析 c语言中for循环
- 2024-10-19 Java Web实战篇:增强for循环实现原理及for循环实战性能优化
- 2024-10-19 1分钟教你学会for循环 for循环教程
- 2024-10-19 C++阶乘:一个数的阶乘和一个范围的阶乘之和
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)