Python实现列表奇偶数字筛选功能代码报错排查
问题说明
需开发Python程序实现以下功能:接收用户输入的数字列表,分别筛选出列表中的偶数与奇数,最终以列表格式打印输出。现有代码存在运行错误,无法达成预期效果。
原有错误代码
def find_evens_and_odds() numbers=list(input("give me your list:")) evens=list() odds=list() for i in numbers: if i % 2 ==0: evens.append(i) else: odds.append(i) print(numbers) print(evens,odds)
错误点排查
- 语法错误:函数定义行
def find_evens_and_odds()末尾缺少Python语法要求的冒号:,程序启动时会直接抛出语法异常,无法运行。 - 输入处理逻辑错误:
input()返回值为字符串类型,直接用list()转换会逐字符拆分输入内容,得到的元素是单个字符串(例如输入123会得到['1','2','3'],输入带空格的1 2 3会得到['1',' ','2',' ','3']),既会混入分隔符类的无效内容,元素也不是可参与数值运算的整数类型。 - 类型匹配错误:遍历得到的列表元素为字符串类型,直接执行
i % 2会触发类型异常,字符串无法和整数做取模运算。
修复后可运行代码
默认要求用户输入时用空格分隔多个数字,代码如下:
def find_evens_and_odds(): numbers = [int(num) for num in input("give me your list(separate numbers with space):").split()] evens = list() odds = list() for i in numbers: if i % 2 == 0: evens.append(i) else: odds.append(i) print("原始列表:", numbers) print("偶数列表:", evens) print("奇数列表:", odds) # 调用函数执行逻辑 find_evens_and_odds()
运行示例:
控制台输入:1 2 3 4 5 6 7 8
控制台输出:
原始列表: [1, 2, 3, 4, 5, 6, 7, 8]
偶数列表: [2, 4, 6, 8]
奇数列表: [1, 3, 5, 7]
如果需要适配逗号分隔的输入格式,仅需把split()替换为split(',')即可。
内容的提问来源于stack exchange,提问作者Parsa soleymani
相关产品推荐
相关产品推荐

