Python代码预期返回布尔值True却无输出,求问题原因
代码无法返回结果的原因分析
你的代码存在两个关键问题,导致没有任何返回值:
函数从未被调用
你定义了compareList函数,但从头到尾都没有执行这个函数的语句。就算函数内部逻辑正确,不调用它就不会产生任何输出或返回值。冗余的外层循环
外层的for i in a循环完全没有意义——每次循环都会重新初始化even和odd为空列表,然后内层循环又把整个列表遍历一遍分类。这不仅做了重复工作,还会让even和odd最终只保留最后一次循环的结果(不过这个结果和只执行一次内层循环是一样的)。
修复后的代码示例
a = [1, 2, 3, 4, 5] even = [] odd = [] for j in a: if j % 2 == 0: even.append(j) else: odd.append(j) def compareList(even_list, odd_list): return len(odd_list) > len(even_list) # 必须调用函数才能得到结果 result = compareList(even, odd) print(result) # 输出 True
额外优化建议
其实可以不用提前分类列表,直接在函数里计算奇偶数量,代码更简洁:
a = [1, 2, 3, 4, 5] def compareOddEvenCount(lst): odd_count = sum(1 for num in lst if num % 2 != 0) even_count = len(lst) - odd_count return odd_count > even_count print(compareOddEvenCount(a)) # 输出 True
内容的提问来源于stack exchange,提问作者Ирина Кейс
相关产品推荐
相关产品推荐

