`
isiqi
  • 浏览: 15946049 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

[Python]循环语句中的 else 子句

阅读更多
[Python]循环语句中的 else 子句
有其它编程语言经验的程序员接触到 Python 时最讶异的莫过于无所不在的 else,不仅分枝语句有,而且循环语句也有,甚至连异常处理也有。但现在我们来看看循环语句中的 else,看看它们的语法:
while_stmt ::=
"while" expression ":" suite
["else" ":" suite]
for_stmt ::=
"for" target_list "in" expression_list
":" suite
["else" ":" suite]
要谈 else 分句,必须要知道 Python 从 C 语言中借来了语义相同的 break 和 continue 语句,因为 else 分句提供了隐含的对循环是否由 break 语句引发循环结束的判断。先来看一个没有应用 else 子句的例子:
>>> def print_prime(n):
... for i in xrange(2, n):
... found = True
... for j in xrange(2, i):
... if i % j == 0:
... found = False
... break
... if found:
... print '%d is a prime number'%i
这是一个查找素数的简单实现,可以看到我们借助了一个标志量 found 来判断是循环结束是不是由 break 语句引起的,如果对 else 善加利用,代码可以简洁得多:
>>> def print_prime2(n):
... for i in xrange(2, n):
... for j in xrange(2, i):
... if i % j == 0:
... break
... else:
... print '%d is a prime number'%i
当循环“自然”终结(循环条件为假)时 else 从句会被执行一次,而当循环是由 break 语句中断时,else 从句就不被执行。
与 for 语句相似,while 语句的else 子句的语意是一样的。else 块在循环正常结束和循环条件不成立时执行。
与 C/C++ 等较为“老土”的语言相比,else 子句使程序员的生产力、和代码的可读性都得到了提高。尽管如此,我见过的代码中使用 else 子句的情况并不多,大概是因为大家都习惯了 C 式的标志量解决方案,我建议大家多使用 else。
最后八卦一下,如果在 python 中想直接退出多重循环,你应该使用异常,python 不提供 goto。关于异常,下次我们再来聊聊。
分享到:
评论

相关推荐

    python的else子句使用指南

    在分支语句中使用else子句在一些常见的编程语言中的用法基本相同,类似于提供了一条默认的执行路径,配合if等条件判断语句使用,相比其它的编程语言(c#, java, js等)在python中,else有一些特殊的用法,配合for, ...

    Python 循环语句之 while,for语句详解

    循环语句(有两种): while 语句 for 语句 while 语句: 问题:输入一个整数n,让程序输出n行的: ...作用:根据一定条件,重复的执行一条语句或多条...则执行else子句中的语句块2,然后结束此while语句的执行,如

    Python for循环搭配else常见问题解决

    这篇文章主要介绍了Python for循环搭配else常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 假设有如下代码: for i in range(10): if i == 5: ...

    Python程序设计:while循环.pptx

    如果为 False则执行else子句部分的语句块2,然后结束此while语句的执行。 如果没有else子句,则直接结束此while语句 else 子句部分可以省略(同if语句类似) while循环 案例:求和计算器 需求描述: 现输入一个数n,求...

    Python程序设计:for循环.pptx

    任务 虚拟减肥跑步机 INTERNATIONAL MEDICAL SUMMIT FORUM 任务 虚拟减肥跑步机 任务背景 本任务是完成虚拟减肥跑步机,在程序...4)当在循环内部用break终止循环时,else子句部分语句不会执行。 for循环 案例:字符分

    Python的for和break循环结构中使用else语句的技巧

    在Python中的while或者for循环之后还可以有else子句,作用是for循环中if条件一直不满足,则最后就执行else语句。 for i in range(5): if i == 1: print 'in for' else: print 'in else' print 'after for-loop' ...

    详解Python中的循环语句的用法

     Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性。须重要理解,if、while、for以及与它们相搭配的 else、 elif、break、continue和pass语句。 二、详解 1、if语句  Python中的if子句由三部分...

    python考试题目及答案-python期末考试试题汇总.doc

    对于有else子句的for循环和while循环,但循环因循环条件不成立而自然结束时__会 __(会或不会)执行else中的代码。 10.已知x='hello world.',那么表达式x.find('x')和x.rfind('x')的值都为__-1__。 12.print("{:#>4d}...

    Python 中文手册

    4.4. break 和 continue 语句, 以及循环中的 else 子句 4.5. pass 语句 4.6. 定义函数 4.7. 深入 Python 函数定义 4.7.1. 默认参数值 4.7.2. 关键字参数 4.7.3. 可变参数列表 4.7.4. 参数列表的分拆 4.7.5. Lambda ...

    python基础学习day06.txt

    用break 结束循环时,else子句不会被执行 range函数 range(stop) range(start, stop[, step]) continue 语句 while语句 while 真值表达式: ..... for语句 for x in 可迭代对象: ... 列表: [] [1,2,3] ...

    上下文管理器和else块1

    先做这个,再做那个:if语句之else 子句的行为仅当 for 循环运行完毕时(即for 循环没有被 break 语句中止)才运行 else 块。仅当 try

    5.循环1

    当存在多层循环时,break语句只能作用于语句所在层的循环遇到continue语句后,循环结构的else子句后的内容就不会被执行到continue用来结束当前当

    Python核心编程第二版

     10.3.8 else子句   10.3.9 finally子句   10.3.10 try-finally语句   10.3.11 try-except-else-finally:厨房一锅端  10.4 上下文管理   10.4.1 with语句   10.4.2 *上下文管理协议   10.5 *...

    Python核心编程第二版(ok)

     10.3.8 else子句   10.3.9 finally子句   10.3.10 try-finally语句   10.3.11 try-except-else-finally:厨房一锅端  cccc10.4 上下文管理   10.4.1 with语句   10.4.2 上下文管理协议   10.5...

    Python核心编程(第二版).pdf (压缩包分2部分,第二部分)

     10.3.8 else子句   10.3.9 finally子句   10.3.10 try-finally语句   10.3.11 try-except-else-finally:厨房一锅端  10.4 上下文管理   10.4.1 with语句   10.4.2 *上下文管理协议   10.5 *...

    Python核心编程(第二版).pdf (压缩包分2部分,第一部分)

     10.3.8 else子句   10.3.9 finally子句   10.3.10 try-finally语句   10.3.11 try-except-else-finally:厨房一锅端  10.4 上下文管理   10.4.1 with语句   10.4.2 *上下文管理协议   10.5 *...

    Python3.2.3官方文档资料中文版

    2.4 break 和 continue 语句和在循环中的 else 子句........................................................... 21 2.5 Pass 语句...............................................................................

    Python基础教程(第3版)-201802出版-文字版

    63 第 5章 条件、循环及其他语句 .................. 64 5.1 再谈 print 和 import ............................... 64 5.1.1 打印多个参数 .............................. 64 5.1.2 导入时重命名 .................

Global site tag (gtag.js) - Google Analytics