【问题标题】:#PYTHON - Else statements with Loop? [duplicate]#PYTHON - 带有循环的其他语句? [复制]
【发布时间】:2015-12-29 07:41:39
【问题描述】:

我是一个 C 人。这些天我正在为我的最新项目需求学习python。 现在我的问题是:带有 Loops[While, For..] 的 Else 语句的意义是什么。我们真的需要它们吗??

【问题讨论】:

标签: python loops if-statement


【解决方案1】:

编辑自Else clause on Python while statement

else 子句仅在您的[Loop] 的条件变为假时执行。如果您 break 退出循环,或者引发异常,则不会执行。

换句话说,它只是一种检查循环是否运行没有任何问题的方法,并且应该完成的所有事情都已完成。如果你必须在中间 breakthrow 一个异常,那么 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.)

...

但是语法方面,第一种方式通常看起来更好。

【讨论】:

  • 好的..当我们真的需要使用else语句时,你能给我一个例子吗?
  • @SJ26 编辑,看看。
【解决方案2】:

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 方法对我来说似乎更自然。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2016-02-16
    • 2014-02-19
    相关资源
    最近更新 更多