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
为代码的开头?False
True
如果这样写的话可能会更清楚:
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)