Python顺序算术运算实现:将重复if-else转换为for/while循环
优化实现方案
首先修正原代码的不规范写法:不要使用int、sum这类Python内置关键字/函数名作为自定义变量名,否则会覆盖原有内置功能,后续触发难以排查的错误。
你可以通过for循环+操作符映射的方式简化重复的if-else逻辑,同时支持任意长度的合法输入(只要数字列表长度比操作符列表长度多1即可),实现代码如下:
# 输入数据 num_list = [1, 6, 8, 4] op_list = ['+', '-', '*'] # 操作符映射字典,key为操作符字符串,value为对应的运算逻辑 op_map = { '+': lambda a, b: a + b, '-': lambda a, b: a - b, '*': lambda a, b: a * b, '/': lambda a, b: a / b } # 初始结果取数字列表第一个值 result = num_list[0] # 遍历操作符依次运算 for idx, op in enumerate(op_list): next_num = num_list[idx + 1] result = op_map[op](result, next_num) print(result)
如果你不想引入字典映射,只想用for循环+if判断实现,也可以用以下版本:
num_list = [1, 6, 8, 4] op_list = ['+', '-', '*'] result = num_list[0] for idx, op in enumerate(op_list): next_num = num_list[idx + 1] if op == '+': result += next_num elif op == '-': result -= next_num elif op == '*': result *= next_num elif op == '/': result /= next_num print(result)
两个版本的运行结果都和你原有代码一致,示例输入的运算结果为-4。
内容的提问来源于stack exchange,提问作者Bennett.tai
相关产品推荐
相关产品推荐

