为什么for循环无法打印每次执行结果?如何实现每次遍历都打印temp变量?
问题原因
你的print语句写在了if判断的代码块内部,只有当两个字符串对比出现不匹配、需要缩短temp的时候才会触发打印。如果当前遍历到的字符串完全包含temp的所有字符,不会进入if代码块,也就不会执行打印操作。
对应你的输入列表,对比fluea和flfjdkl时,两个字符串都完全匹配当前的公共前缀fl,没有触发if逻辑,因此少了两次打印。
修复方法
将print语句移到外层遍历字符串的for循环末尾,每次完成一个字符串的公共前缀对比后,统一打印当前的temp值即可,不需要绑定if触发条件。
修改后的代码如下:
strs = ["flower","flow","flight","fluea","flfjdkl","f"] temp = strs[0] for i in range(1, len(strs)): for j in range(len(temp)): if j >= len(strs[i]) or strs[i][j] != temp[j]: temp = temp[:j] break print(temp)
运行后输出结果和你预期一致:
flow fl fl fl f
内容的提问来源于stack exchange,提问作者readmyname
相关产品推荐
相关产品推荐

