编写批量处理多列表元素除法的Python程序遇问题求助
解决列表对应元素逐一除法的问题
你的问题出在遍历列表的方式上:你分别单独遍历了列表a和b,两次循环结束后,变量A和B仅保留了两个列表的最后一个元素(也就是23和7),所以最后只调用了一次divide函数,自然只能得到一组结果。
要实现对应元素逐一除法,需要同时遍历两个列表的配对元素,这里可以用Python的zip()函数来完成——它会把两个列表中位置对应的元素打包成元组,供循环逐一处理。
修正后的完整代码
def divide(a,b): try: return a/b except ZeroDivisionError: return 'Dividing by ZERO is UNDEFINED' a = [1,7,11,12,23] b = [23,17,18,0,7] # 同时遍历两个列表的对应元素 for num_a, num_b in zip(a, b): result = divide(num_a, num_b) print(result) print('END OF PROGRAM')
运行输出
0.043478260869565216 0.4117647058823529 0.6111111111111112 Dividing by ZERO is UNDEFINED 3.2857142857142856 END OF PROGRAM
关键说明
zip(a, b)会生成类似(1,23), (7,17), (11,18), (12,0), (23,7)的配对元组,循环时可以直接取出每一组对应元素。- 保留了原有的
ZeroDivisionError异常处理,遇到除数为0时会返回提示文本,避免程序崩溃。
内容的提问来源于stack exchange,提问作者Wael El-Dikhairy
相关产品推荐
相关产品推荐

