Python如何用单行lambda实现输入读取与两数求和,现有报错如何解决
错误原因
- 第一处语法错误:
str.format()传参不匹配。input().split()返回的是单个列表对象,你将它作为唯一参数传给format(),但你的格式化字符串有{0}、{1}两个占位符,需要传入2个独立参数,参数数量不匹配直接触发tuple index out of range报错。 - 第二处逻辑错误:就算格式化语法没问题,你最终传给lambda的是格式化后的单个字符串,而你定义的lambda需要接收2个独立参数,调用时参数数量也不匹配,仍会报错。
- 第三处功能缺失:你没有对输入的两个字符串做int类型转换,就算调用成功得到的也是字符串拼接结果,而非数值相加结果。
正确实现方案
lambda版本(匹配你的实现思路)
print((lambda a, b: int(a) + int(b))(*input().split()))
这里用*对input.split()返回的列表做解包,把列表的两个元素作为独立参数传给lambda,同时在lambda内部完成类型转换。
更简洁的非lambda版本
print(sum(map(int, input().split())))
用map(int, ...)把拆分后的所有字符串转成int类型,再用sum直接求和,适配任意数量输入的求和场景。
可搜索的相关关键词
- Python str.format 占位符参数数量匹配规则
- Python 可迭代对象解包 * 运算符用法
- Python lambda 参数传递规则
内容的提问来源于stack exchange,提问作者phaestos
相关产品推荐
相关产品推荐

