第一次迭代后循环停止
Posted
技术标签:
【中文标题】第一次迭代后循环停止【英文标题】:Loop stops after first iteration 【发布时间】:2021-10-28 20:35:14 【问题描述】:我需要检查列表中的每个字符串是否都在标题中。如果是,则返回 True - 如果不是,则返回 False。我写了以下内容:
word_list=["ABC", "abc", "Abc"]
def all_title_case(word_list):
for word in word_list:
if not word.istitle():
return False
else:
return True
print(all_title_case(word_list))
我的问题是循环似乎在第一个字符串之后停止(我猜是因为返回?)
我怎样才能让它遍历整个列表?
*我是python新手
非常感谢!
【问题讨论】:
你认为return
是做什么的?
在完全完成 for 循环后,您只想return True
。
仅供参考,您可以使用 all()
在一行中完成您想做的事情 - print(all(word.istitle() for word in word_list))
。
【参考方案1】:
您将立即在 if
和 else
块中返回。这在两种情况下都结束了循环。
您应该只在if
块中返回。如果你通过整个循环而不返回,你就知道所有的单词都是标题大小写。
def all_title_case(word_list):
for word in word_list:
if not word.istitle():
return False
return True
您也可以使用all()
函数代替循环。
def all_title_case(word_list):
return all(word.istitle() for word in word_list)
【讨论】:
非常感谢,两种解决方案都可以解决!【参考方案2】:return 语句结束你的函数的执行,如果你只在你的 for 迭代完成时返回 True,你就会得到你想要的
换句话说,你的 return 语句结束了你的 for 循环,你可以在这个问题上阅读一些关于它的信息: How to use a return statement in a for loop?
word_list=["ABC", "abc", "Abc"]
def all_title_case(word_list):
for word in word_list:
if not word.istitle():
return False
return True
print(all_title_case(word_list))
【讨论】:
非常感谢,这正在解决它!以上是关于第一次迭代后循环停止的主要内容,如果未能解决你的问题,请参考以下文章