Python循环中的else语句

绝大部分编程语言中都有条件判断语句,比如 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 也是一样。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s