Python循环中的else语句
2014-08-26 19:37
225 查看
绝大部分编程语言中都有条件判断语句,比如 if … else ,在大部语言中,else 一般只在条件判断语句中出现,与 if 语句配套出现,不过在 Python 中,else 除了能与 if 这样的条件判断一起出现外,还能出现在 for、while 这样的循环语句中。
我们来看一个例子:
s = ["a111", "b222", "c333", "d444", "e555"]
found = False
for c in s:
if c.startswith("c"):
found = True
print u"发现以字母c开头的项"
break
if not found:
print u"没有发现以字母c开头的项"
做一次循环,如果发现满足条件的字母则打印出提示信息,循环完了还没有发现则打印出另一条信息。我们需要设置一个额外的变量来记录是否找到了目标字符(程序中的 found 变量),在循环完成之后再做一个 if 判断。
上面的写法当然是可以的,不过如果我们使用循环中的 else 语句的话,代码会更简洁清晰。比如:
s = ["a111", "b222", "c333", "d444", "e555"]
for c in s:
if c.startswith("c"):
print u"发现以字母c开头的项"
break
else:
print u"没有发现以字母c开头的项"
在这儿,记录是否找到的额外的变量不需要了,也不再需要在循环完成后再进行 if 判断,但达到的效果和第一段代码是一样的。
在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。
如果表达式 nested + ''引发异常,就执行except的TypeError。它将执行pass语句,什么也没有发生。然后执行for语句。
如果表达式 nested + ''没有引发异常,就执行try的else语句。它执行 raise TypeError语句,引发一个TypeError异常,然后执行外层的except TypeError:语句。
try首行底下的代码块代表此语句的主要动作:试着执行的程序代码。except分句定义try代码块内引发的异常处理器,而else分句(如果有)则是提供没有发生异常时候要执行的处理器。
如果try代码块语句执行时发生了异常,Python就跳回try,执行try下面第一个符合引发的异常的except分句下面的语句。当except代码执行后(除非except代码块引发另一异常),控制全就会到整个try语句后继续执行。
如果异常发生在try代码块内,没有符合的except分句,异常就会向上传递到程序的之前进入try中,或者到这个进程的顶层(使用Python终止这个程序并打印默认的错误消息)
如果try首行底下执行的语句没有发生异常,Python就会执行else行下的语句(如果有的话),控制权会在整个try语句下继续。
也就是说except分句会捕捉try代码块执行时所有发生的任何异常,而else分句只在try代码执行没有发生异常时才执行,finally分句无法释放发生异常都执行。
我们来看一个例子:
s = ["a111", "b222", "c333", "d444", "e555"]
found = False
for c in s:
if c.startswith("c"):
found = True
print u"发现以字母c开头的项"
break
if not found:
print u"没有发现以字母c开头的项"
1 2 3 4 5 6 7 8 9 10 | s = ["a111", "b222", "c333", "d444", "e555"] found = False for c in s: if c.startswith("c"): found = True u"发现以字母c开头的项" break if not found: u"没有发现以字母c开头的项" |
上面的写法当然是可以的,不过如果我们使用循环中的 else 语句的话,代码会更简洁清晰。比如:
s = ["a111", "b222", "c333", "d444", "e555"]
for c in s:
if c.startswith("c"):
print u"发现以字母c开头的项"
break
else:
print u"没有发现以字母c开头的项"
1 2 3 4 5 6 7 | s = ["a111", "b222", "c333", "d444", "e555"] for c in s: if c.startswith("c"): u"发现以字母c开头的项" break else: u"没有发现以字母c开头的项" |
在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。
python中try except else语句
首先来代码分析一下:def flatten(nested): try: # Don't iterate over string-like objects: try: nested + '' except TypeError: pass else: raise TypeError for sublist in nested: for element in flatten(sublist): yield element except TypeError: yield nested
如果表达式 nested + ''引发异常,就执行except的TypeError。它将执行pass语句,什么也没有发生。然后执行for语句。
如果表达式 nested + ''没有引发异常,就执行try的else语句。它执行 raise TypeError语句,引发一个TypeError异常,然后执行外层的except TypeError:语句。
try首行底下的代码块代表此语句的主要动作:试着执行的程序代码。except分句定义try代码块内引发的异常处理器,而else分句(如果有)则是提供没有发生异常时候要执行的处理器。
如果try代码块语句执行时发生了异常,Python就跳回try,执行try下面第一个符合引发的异常的except分句下面的语句。当except代码执行后(除非except代码块引发另一异常),控制全就会到整个try语句后继续执行。
如果异常发生在try代码块内,没有符合的except分句,异常就会向上传递到程序的之前进入try中,或者到这个进程的顶层(使用Python终止这个程序并打印默认的错误消息)
如果try首行底下执行的语句没有发生异常,Python就会执行else行下的语句(如果有的话),控制权会在整个try语句下继续。
也就是说except分句会捕捉try代码块执行时所有发生的任何异常,而else分句只在try代码执行没有发生异常时才执行,finally分句无法释放发生异常都执行。
相关文章推荐
- Python循环语句中else的用法总结
- Python 小技巧:for 循环后面接 else 语句
- [Python]循环语句中的 else 子句
- python循环语句中的else,break和continue
- Python的for和break循环结构中使用else语句的技巧
- python3 for 循环中的 else 语句
- Python While 循环语句使用else语句
- Python的for和break循环结构中使用else语句的技巧
- Python循环语句中else的用法总结
- python 循环语句的else语句用法,当循环条件变为假,切不是通过breakbreak终止的时候,就会执行这个else语句。
- [Python 05] 条件,循环和其他语句
- Python基础教程学习笔记----第五章 条件、循环和其他语句
- python 条件,循环和其他语句的学习笔记
- python中的try/except/else/finally语句
- [python学习笔记]条件,循环和其他语句
- Python中条件选择和循环语句使用方法介绍
- 关于Python中的for循环控制语句
- Python中如何避免使用多个分支语句(多个if和else)——函数字典(Function Map)简介
- Python中条件选择和循环语句使用方法介绍
- python的for和while竟然有else语句,我石化了