Python中even_number函数(含*args)输出列表格式不符预期的问题求助
解决Python偶数列表输出问题
我来帮你搞定这个小问题!你的核心问题是没有先把所有符合条件的偶数收集到一个统一的列表中,而是逐个打印单个元素的"迷你列表",导致输出格式不符合预期。咱们一步步来修正:
原来代码的问题分析
你的原代码:
def even_number(*args): for even in args: if even%2==0: print(list(str(even)),end='')
- 每次循环都会把单个偶数转成字符串再拆成列表(比如
8会变成['8']),然后直接打印这个单元素列表 end=''只是让这些迷你列表的输出连在一起,并不是把它们合并成一个大列表,所以最终会得到类似['8']['6']['4']的结果(和你描述的[8],[6],[4]本质是同一个问题)- 如果直接打印
even,只会逐个输出数字,没有列表的包裹格式
正确的解决方案
我们需要先把所有偶数收集到一个列表里,再统一打印这个列表,这样就能得到[8,6,4]的格式了:
基础版(循环收集)
def even_number(*args): # 创建空列表存储所有偶数 even_list = [] for num in args: if num % 2 == 0: even_list.append(num) # 打印最终的完整列表 print(even_list)
简化版(列表推导式)
如果你想让代码更简洁,可以用Python的列表推导式一步完成收集:
def even_number(*args): even_list = [num for num in args if num % 2 == 0] print(even_list)
测试效果
调用函数even_number(8, 6, 4, 3, 5),输出就是你想要的:
[8, 6, 4]
这样就完美符合你的需求啦!
内容的提问来源于stack exchange,提问作者YAsh rAj
相关产品推荐
相关产品推荐

