Python上下车率多轮迭代计算代码打印异常问题排查
问题原因
你当前使用了两层嵌套循环:
- 外层循环执行次数为你指定的迭代次数(10次)
- 内层循环遍历
boarding和exiting的配对结果,这两个列表长度均为3,因此每触发一次外层循环,内层都会完整执行3次遍历、打印3条结果,所以会出现你遇到的每轮迭代输出3次的问题。
除此之外你的代码还有两处逻辑错误:
- 第一轮迭代时每次进入内层循环都会将
current重置为0,无法保留上一组数据的计算结果 - 非第一轮的数值计算逻辑多写了一次加
x的操作,计算结果不符合逻辑
解决方法
如果你的需求是每轮迭代按顺序取一组boarding和exiting的值,列表遍历完后从头开始,取满指定迭代次数,可以去掉嵌套循环,用下标取数的方式实现,修正后的代码如下:
iterations = 10 boarding = [10, 20, 10] exiting = [30, 25, 15] current = 0 list_length = len(boarding) for e in range(1, iterations + 1): # 用取余运算实现列表循环取值 current_idx = (e - 1) % list_length x, y = boarding[current_idx], exiting[current_idx] if e == 1: current = 0 else: # 修正计算逻辑:当前值 = 旧有值 - 下车人数 + 上车人数 current = current - min(current, y) + x print('{0:^10d}{1:^10d}{2:^10d}{3:^10d}'.format(e, current, x, y))
运行后每轮迭代仅输出1条结果,共10条,符合需求。
内容的提问来源于stack exchange,提问作者Travis Smith
相关产品推荐
相关产品推荐

