Python使用input函数接收多值输入时代码报错原因咨询
报错原因说明
你的代码触发错误的核心原因是传入int()的参数类型不符合函数要求:
input("Enter two numbers").split()的执行结果是字符串列表:比如用户输入3 5时,split处理后得到的是['3', '5'],是包含两个字符串元素的列表。int()函数仅支持接收单个可转换为整数的参数(比如单个数字字符串、单个浮点数),无法直接接收列表类型作为入参。你当前的写法是试图把整个列表直接传入int()做类型转换,会直接抛出TypeError,提示int参数不能是列表,代码根本走不到后续拆包赋值、计算求和的步骤。- 你写的拆包逻辑
a,b = xxx要求xxx是包含2个元素的可迭代对象,但int(列表)本身执行阶段就会报错,完全不会执行到拆包这一步。
正确写法说明
你提到的map()写法之所以能生效,是因为map(int, 输入列表)会把int()转换逻辑依次作用在列表的每一个元素上,分别把两个字符串转成整数,最终得到的两个整数值可以正常拆包赋值给a、b,修正后代码如下:
a,b = map(int, input("Enter two numbers").split()) print(a+b)
补充提示:该写法默认要求用户输入时用空白字符(空格、制表符等)分隔两个数字,如果输入的数字数量不对、分隔符不符合要求,还会触发其他类型的报错,但不属于你当前代码触发错误的原因范畴。
内容的提问来源于stack exchange,提问作者student
相关产品推荐
相关产品推荐

