您的位置:首页 > 编程语言 > Python开发

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开头的项"

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

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开头的项"

1
2
3
4
5
6
7

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 也是一样。

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分句无法释放发生异常都执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: