Python中用for循环判断两单词首字母相同为何失效?
错误原因分析
- 对for循环的遍历对象理解有误
text.split()确实会把输入的两个单词的字符串拆成包含2个字符串元素的列表,比如输入'Levelheaded Llama'拆分后是['Levelheaded', 'Llama']。你用for word in text.split()遍历时,每次循环拿到的word是单个单词的字符串,不是整个单词列表。第一次循环时word的值是第一个单词'Levelheaded',根本不存在两个单词让你比对。 - 索引逻辑完全错误
你写的word[0][0]是对单个字符串取索引:word[0]已经是单个单词的首字符,再套[0]还是这个字符;而word[1][0]是试图取单个单词的第二个字符、再取这个字符的第0位,本质是在同一个单词内部做无意义的比对,如果单词长度不足2还会直接报错。 - 首次循环就直接返回,没有遍历完全
你的代码里不管判断结果是True还是False,第一次循环走完就会触发return直接结束函数,根本不会处理第二个单词,逻辑完全走不通。
正确的for循环实现参考
如果一定要用for循环实现,可以先把两个单词的首字母暂存到列表里再比对,示例如下:
def animal_crackers(text): first_chars = [] for word in text.split(): first_chars.append(word[0]) return first_chars[0] == first_chars[1]
原本的非循环版本已经是最优实现,不需要额外用for循环增加冗余逻辑。
内容的提问来源于stack exchange,提问作者wydncwymsjgcs
相关产品推荐
相关产品推荐

