如何从input输入获取整数列表用于计算并解决reduce调用类型错误
问题解决方法
你遇到的报错根源有两个:
input()返回的是完整字符串,直接用list(listOfNums)会把字符串拆为单个字符组成的列表,所有元素都是字符串类型- Python3中
reduce需要先从functools模块导入才能使用
完整修改方案
1. 基础可用版本
from functools import reduce # 接收输入并处理为数字列表 listOfNums = input("Type Numbers ") # 按空格拆分后转浮点型,兼容整数、小数输入,若只需整数可把float改为int num_list = [float(num) for num in listOfNums.split()] def calcR(num1, num2): return 1 / ((1 / num1) + (1 / num2)) result = round(reduce(calcR, num_list), 5) print(result)
2. 效果验证
如果在输入框键入2 4 4,程序会自动转换为[2.0,4.0,4.0]传入计算,最终输出结果为1.0,符合并联电阻计算逻辑。
可选:增强输入健壮性
如果需要避免用户输入非数字内容导致崩溃,可以增加输入校验逻辑:
from functools import reduce listOfNums = input("Type Numbers ") num_list = [] for num_str in listOfNums.split(): try: num_list.append(float(num_str)) except ValueError: print(f"忽略非法输入:{num_str}") def calcR(num1, num2): return 1 / ((1 / num1) + (1 / num2)) # 校验列表长度至少为2才能调用reduce计算 if len(num_list) >=2: result = round(reduce(calcR, num_list), 5) print(result) else: print("请至少输入2个有效数字")
内容的提问来源于stack exchange,提问作者Sayed Reda
相关产品推荐
相关产品推荐

