第一次迭代后循环停止

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】:

您将立即在 ifelse 块中返回。这在两种情况下都结束了循环。

您应该只在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))

【讨论】:

非常感谢,这正在解决它!

以上是关于第一次迭代后循环停止的主要内容,如果未能解决你的问题,请参考以下文章

嵌套的while循环在第一次迭代PHP后停止

我的 do while 循环在一次迭代后停止。我该如何继续下去?

动画迭代计数无限循环

Map 在 React 中的第一次迭代后停止迭代

函数7—递归

我正在尝试使用 c++ STL 制作 prims 算法。在迭代器第一次迭代后,它会停止代码并给出错误的输出