You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决lambda函数中出现的「字符串格式化时未转换所有参数」TypeError问题

报错原因

  • input()返回的内容默认是字符串类型,经过split(' ')拆分后得到的列表a中所有元素都是字符串格式,不是整数。
  • 当lambda函数中执行x%2逻辑时,因为x是字符串,Python会将%识别为字符串格式化运算符,而非数值取模运算符,字符串格式化时参数数量不匹配就触发了该TypeError。

修复方法

只需要在拆分输入后,将列表内的所有元素转换为整数类型即可,可选增加输入合法性校验避免用户输入非数字内容时报错。

修正后完整代码

def even_odd_lambda(list_object):
    odd_ctr = len(list(filter(lambda x: (x%2 != 0) , list_object)))
    even_ctr = len(list(filter(lambda x: (x%2 == 0) , list_object)))
    return [odd_ctr, even_ctr] 

if __name__ == '__main__':
    # 拆分输入后转为整数列表
    a = list(map(int, input("Add list elements seperated by space ").split(' ')))
    output = even_odd_lambda(a)
    print("\nNumber of even numbers in the above array: ", output[1])
    print("\nNumber of odd numbers in the above array: ", output[0])  

如果需要兼容非数字输入的场景,可以加异常捕获:

if __name__ == '__main__':
    try:
        input_content = input("Add list elements seperated by space ").split(' ')
        a = list(map(int, input_content))
        output = even_odd_lambda(a)
        print("\nNumber of even numbers in the above array: ", output[1])
        print("\nNumber of odd numbers in the above array: ", output[0])  
    except ValueError:
        print("输入包含非数字内容,请重新输入")

内容的提问来源于stack exchange,提问作者Nikhil Bante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:39:02