这两个函数不应该返回完全相同的东西吗?
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