许多Python程序员可能不知道while
循环和for
循环的语法包含一个可选的else:
子句:
for val in iterable:
do_something(val)
else:
clean_up()
else
子句的主体对于某些类型的清理操作来说是一个很好的地方,并且在循环的正常终止时执行:return
或break
退出循环跳过else
子句;在继续执行后退出。我之所以知道这一点,只是因为我只是查了一下(再次),因为我永远记不起何时执行
else
子句。
总是正如名字所暗示的,循环的“失败”是什么?定期终止?即使使用
返回退出循环
?不查一下,我永远不能完全肯定。
我把我持续的不确定性归咎于关键词的选择:我发现其他的语义学很难记住。我的问题不是“为什么这个关键词被用于这个目的”(我可能会投票结束,尽管只有在阅读了答案和评论之后),而是我如何思考
另一些
关键词,以便它的语义学有意义,因此我能记住它?
我确信关于这一点已经有了相当多的讨论,并且我可以想象,做出这个选择是为了与
try
语句的else:
子句(我也必须查找该子句)保持一致,并且目标是不将其添加到Python的保留字列表中。也许选择else
的原因将阐明它的功能并使它更令人难忘,但我是在将名称与功能联系起来,而不是在历史解释本身之后。
这个问题的答案包含了很多有趣的背景故事,我的问题作为一个复制品简短地结束了。我的问题有不同的重点(如何将
else
的特定语义与关键字选择联系起来),但我觉得应该在某个地方有一个与这个问题的链接。
if
何时执行else
?当其条件为假时。这与while
/else
完全相同。因此,您可以将while
/else
视为一个if
,它会一直运行其真实条件,直到其计算结果为false。中断
不会改变这一点。它只是跳出包含循环,没有任何计算。只有在/条件为false时对
进行评估时,才会执行else
。
的是相似的,只是它的假条件耗尽了它的迭代器。
继续
和中断
不执行其他
。那不是他们的功能。中断退出包含循环。继续
返回到包含循环的顶部,在那里计算循环条件。它是评估if
/而
为false(或for
没有更多的项目)的行为,执行其他
,没有其他方式。
最好这样考虑:如果前面的for
块中的所有操作都正常,则始终会执行else
块,以使其耗尽。
在这个上下文中,右将意味着没有异常
,没有中断
,没有返回
。任何从为
劫持控件的语句都将导致绕过他人
块。
在iterable
中搜索项目时,会发现一个常见的用例,对于该用例,在找到项目时会取消搜索,或者通过以下else
块升起/打印“not found”
标志:
for items in basket:
if isinstance(item, Egg):
break
else:
print("No eggs in basket")
继续
不会劫持for
的控制,因此在for
耗尽后,控制将继续到的其他
。
如果if
语句的条件计算为false,则该语句将运行其else
子句。同样,如果while
循环的条件计算为false,则循环将运行else子句。
此规则与您描述的行为相匹配:
for
循环的行为方式相同。如果迭代器有更多的元素,否则,请将条件视为true,否则为false。
我有两个循环。在第一个循环中,我分割字段(分割)。在第二个循环中,我想打印新的字段值。只有0。我想知道循环有什么问题。我没有发现错误。:)我认为问题出在这方面: 我在Windows 7中使用Visual Studio 2013编程。 %lf输出(正确): %f输出(不正确):
问题内容: 许多Python程序员可能没有意识到循环和循环的语法包含一个可选子句: 子句的主体是执行某些类型的清理操作的好地方,并在循环的正常终止时执行:即,使用或跳过子句退出循环;执行后退出。我知道这只是因为我只是看着它(再次),因为我永远记得 当 该子句被执行。 总是?顾名思义,在循环的“失败”上?定期终止吗?即使循环退出?我永远不能完全确定,不查它。 我将不确定性归咎于关键字的选择:我发现这
我正在编写一个Java7Swing应用程序,它调用一个非GUI类来在循环中执行某些操作。不幸的是,当循环运行时,我无法与GUI交互。在该循环中是否可以强制处理GUI事件? 我正在搜索一些内容,告诉JVM在继续循环之前处理其他GUI事件(如按钮单击)。
如果我的问题看起来很长,我道歉。我会尽量简明扼要。 问题:编写一个程序,将以千克为单位的估算重量转换为磅。如果用户输入负值,程序应要求玩家重新输入数字。 我创建了三个函数。第一个函数-返回玩家输入第二个函数-返回以磅为单位的权重第三个函数-如果权重为正,返回以磅为单位的值,或者如果值为负,要求另一个输入。 如果相同的值为正数,我的程序将返回正确的值。然而,当我输入一个负浮点数时,我的程序将永远打印
问题内容: 在Python中,这里描述了一种有效的for else循环实现 示例代码: 在Java中,我需要编写更多代码来实现相同的行为: 在Java中,还有没有比Python更出色的实现else循环的实现? 问题答案: 这样做是这样的:
我试着用Java画一个长方形。我设置框架大小(800400)和可调整大小(假)矩形的x=50,y=50宽度=700高度=300。为什么不在中间呢?非常感谢。
这里已经有很多问题了,但我还是会继续。这是一个简单的脑力操翻译。我想出了所有其他符号,但我不知道如何实现循环。有人能帮忙吗? 我有一种感觉,我需要使用Stack,但我似乎不知道如何使用。我以前构建过表达式计算器。。。这需要同样的逻辑吗?
我该怎么解决呢? 第二次我什么都写不出来。