Python作业求助:filter_int函数编写错误排查与修正指导
问题分析与修正方案
错误原因
- 参数命名冲突:使用Python内置类型
list作为参数名,会覆盖内置的list类型,可能引发后续代码的异常问题。 - 判断逻辑无效:通过
i in "qwertyuiopasdfghjklzxcvbnm"判断元素类型完全错误。字符串是整体对象,不会等于单个字母;数字(包括整数和浮点数)也不可能存在于字母字符串中,导致所有非字符串元素都会被错误保留,无法区分整数和浮点数。 - 未正确筛选整数类型:需求要求仅保留
int类型元素,但你的代码无法区分int和float(如5.0、9.0这类浮点型数值会被错误保留)。
修正后的代码
def filter_int(input_list): result = [] for item in input_list: # 严格判断元素类型是否为整数 if type(item) is int: result.append(item) return result
代码说明
- 将参数名改为
input_list,避免与内置类型list冲突。 - 遍历输入列表时,使用
type(item) is int严格校验元素类型,确保只保留int类型的元素,自动排除字符串、浮点型等其他类型。 - 仅维护一个结果列表,无需额外的废弃列表,逻辑更简洁高效。
测试示例输入:
print(filter_int(["hello", 5, 5.0, 6, "World", "Yes", 4, 9.0])) # 输出结果:[5, 6, 4]
内容的提问来源于stack exchange,提问作者WorldXp
相关产品推荐
相关产品推荐

