【发布时间】:2015-12-29 07:41:39
【问题描述】:
我是一个 C 人。这些天我正在为我的最新项目需求学习python。 现在我的问题是:带有 Loops[While, For..] 的 Else 语句的意义是什么。我们真的需要它们吗??
【问题讨论】:
标签: python loops if-statement
我是一个 C 人。这些天我正在为我的最新项目需求学习python。 现在我的问题是:带有 Loops[While, For..] 的 Else 语句的意义是什么。我们真的需要它们吗??
【问题讨论】:
标签: python loops if-statement
编辑自Else clause on Python while statement:
else子句仅在您的[Loop]的条件变为假时执行。如果您break退出循环,或者引发异常,则不会执行。
换句话说,它只是一种检查循环是否运行没有任何问题的方法,并且应该完成的所有事情都已完成。如果你必须在中间 break 或 throw 一个异常,那么 else 语句将不会执行,因为循环没有“正确”完成。
编辑:来自链接线程的示例很好地解释了这一点。 else 语句检查循环是否执行完全 - 如果它没有被打破并且没有引发异常,您可以执行某个操作。例如:
...
for i in mylist:
if i == theflag:
break
process(i)
else:
raise ValueError("List argument missing terminal flag.)
...
注意,这只是语法。当然你也可以不用for-else 声明,像这样:
...
flagfound = False
for i in mylist:
if i == the flag:
flagfound = True
break
process(i)
if not flagfound:
raise ValueError("List argument missing terminal flag.)
...
但是语法方面,第一种方式通常看起来更好。
【讨论】:
当for 循环耗尽其列表或while 循环变为假时,Python 能够执行代码。
如果你想在循环“不成功”的情况下进行特殊处理,这实际上非常好。例如,在列表中搜索一个数字:
for testVal in listOfVals:
if lookingFor == testVal:
print("Found one")
else:
print("Not in the list")
对于其他语言(例如 C),通常会保留一个 found 布尔变量来指示它已找到,然后在循环后检查该变量,例如:
int found = 0;
for (int i = 0; i < size; i++) {
if (lookingFor == listOfVals[i]) {
puts ("Found one")
found = 1;
}
}
if (!found) {
puts ("Not in the list")
}
可能还有其他方法可以在 C 中实现相同的目的,但 Python 方法对我来说似乎更自然。
【讨论】: