为什么这些代码不一样?(python列表理解问题)



这两个函数不应该返回完全相同的东西吗?

def wordlist(text):
words = []
for word in text.split():
if word.isupper():
words.append(word)
else:
break
return words
def wordlist(text):
return [word for word in text.split() if word.isupper()]
上下文

我正在一个教育IDE上做一些python练习,该IDE通过向我的代码传递各种输入来"测试"我的代码。该函数的第一个版本是所提供的通过所有测试的解决方案。第二个版本是我的,它通过了大部分测试,但没有通过一些我看不到的隐藏测试。我的理解是,这两个函数应该做完全相同的事情。我有什么不明白的?

以下是第二个函数通过的测试输入的一些示例:

>>> wordlist("HOW MUCH WOOD cOuLd a k9 chuck") 
>>> ['HOW', 'MUCH', 'WOOD']
>>>
>>> wordlist("9R 4J7L EOS B4d")
>>>['9R', '4J7L', 'EOS']

很抱歉,我无法提供输入失败的详细信息。我实际上看不到它,因为它是一个";隐藏测试";。

在版本1中,如果条件word.isupper()未满足,则将执行break语句,从而完全退出for循环。这意味着代码将立即返回列表words,并且以下任何单词都不会添加到返回的列表中。如果希望版本1具有与版本2相同的输出,请尝试用continue语句替换break语句。

由于break语句,第一个版本将只输出前2"UPPERS";在";"上部-上部-下部-上部";,而第二版本将输出3〃;上部;s

最新更新