将变量设置为 True 或 False 有何意义?

Dco*_*ode 1 python variables if-statement

我正在 Youtube 上观看有关 Python 基础知识的教程视频。在视频中,他创建了一个列表并编写了一个代码,如果有任何以字母“J”开头的单词,则打印出“Found”。 代码截图 这是代码:

names = ["John", "Mary"]
found = False
for name in names:
    if name.startswith("J"):
        print("Found")
        found = True
        break
if not found:
    print("Not found")
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果他随后将变量更改为底部,为什么他决定将变量设置found为代码的开头?FalseTrue

wja*_*rea 6

如果这样写的话可能会更清楚:

names = ["John", "Mary"]
found = False
for name in names:
    if name.startswith("J"):
        found = True
        break

if found:
    print("Found")
else:
    print("Not found")
Run Code Online (Sandbox Code Playgroud)

这个功能上是一样的,但是作用found应该更清晰一些。


尽管正如@martineau 所评论的,你甚至不需要found,因为 Python 有一个else子句,你可以添加到for循环中,该子句在循环未中断时激活:

names = ["John", "Mary"]
for name in names:
    if name.startswith("J"):
        print("Found")
        break
else:  # No break
    print("Not found")
Run Code Online (Sandbox Code Playgroud)

或者,这是基于@Daniel 的评论,使用生成器表达式和三元组的另一个选项:

names = ["John", "Mary"]
found = any(name.startswith("J") for name in names)
print("Found" if found else "Not found")
Run Code Online (Sandbox Code Playgroud)