我最近开始驾驶一辆传统上使用高级汽油(93 辛烷值)的汽车。但根据制造商的说法,它只需要 91 辛烷值。问题是,在美国,你只能购买 87、89 或 93 辛烷值的汽油。在我居住的地方,汽油价格从一个等级跳到下一个等级每加仑上涨 30 美分,因此高级汽油比普通汽油贵 60 美分。那么为什么不尝试省一些钱呢?
很容易等到油表显示油箱半满,然后加注 89 辛烷值的汽油,这样你就得到了 91 辛烷值。但接下来该怎么做就变得棘手了——半箱 91 辛烷值汽油加上半箱 93 辛烷值汽油最终变成 92 辛烷值,然后你该怎么办?你可以继续计算,但它们会变得越来越混乱。这就是 Python 发挥作用的地方。
我想出一个简单的方案,我可以在某个液位用 93 辛烷值汽油加满油箱,然后在相同或某些其他液位用 89 辛烷值汽油加满油箱,主要目标是最终混合物永远不会低于 91 辛烷值。我需要做的是创建一个循环计算,该计算使用先前加油的辛烷值。我想可能会有一些多项式方程可以解决这个问题,但在 Python 中,这听起来像一个循环。
#!/usr/bin/env python
# octane.py
o = 93.0
newgas = 93.0 # this represents the octane of the last fillup
i = 1
while i < 21: # 20 iterations (trips to the pump)
if newgas == 89.0: # if the last fillup was with 89 octane
# switch to 93
newgas = 93.0
o = newgas/2 + o/2 # fill when gauge is 1/2 full
else: # if it wasn't 89 octane, switch to that
newgas = 89.0
o = newgas/2 + o/2 # fill when gauge says 1/2 full
print str(i) + ': '+ str(o)
i += 1
正如你所看到的,我正在初始化变量 o(油箱中当前的辛烷值混合物)和变量 newgas(我上次加注油箱的汽油),它们的值都为 93。然后循环将重复 20 次,用于 20 次加油,每次去加油站时在 89 辛烷值汽油和 93 辛烷值汽油之间切换。
1: 91.0
2: 92.0
3: 90.5
4: 91.75
5: 90.375
6: 91.6875
7: 90.34375
8: 91.671875
9: 90.3359375
10: 91.66796875
11: 90.333984375
12: 91.6669921875
13: 90.3334960938
14: 91.6667480469
15: 90.3333740234
16: 91.6666870117
17: 90.3333435059
18: 91.6666717529
19: 90.3333358765
20: 91.6666679382
这表明我可能只需要 10 或 15 个循环就能看到稳定。它还表明,很快,我就会低于 91 辛烷值的目标。看到交替混合值的稳定也很有趣,事实证明,对于任何每次选择相同量的方案,这种情况都会发生。事实上,即使 89 辛烷值汽油和 93 辛烷值汽油的加油量不同,情况也是如此。
所以在这一点上,我开始玩分数,考虑到我可能需要比 89 辛烷值汽油更多的 93 辛烷值汽油。我也不想经常去加油站。我最终得到的结果(在我看来还不错)是等到油箱大约 7⁄12 满时,加注 89 辛烷值汽油,然后等到油箱 1⁄4 满时,加注 93 辛烷值汽油。
以下是循环中的更改
if newgas == 89.0:
newgas = 93.0
o = 3*newgas/4 + o/4
else:
newgas = 89.0
o = 5*newgas/12 + 7*o/12
以下是从第十次加油开始的数字
10: 92.5122272978
11: 91.0487992571
12: 92.5121998143
13: 91.048783225
14: 92.5121958062
15: 91.048780887
正如你所看到的,这使最终辛烷值始终略高于 91。当然,我的油表没有以十二分之一为单位标记,但 7⁄12 略小于 5⁄8,我可以处理。
另一种简单的解决方案可能是将油箱跑到空,然后加满 93 辛烷值汽油,然后下次只加半箱 89 辛烷值汽油——也许这将成为我的默认计划。就我个人而言,我不喜欢把油箱跑到完全没油,因为这并不总是方便的。另一方面,它在长途旅行中很容易奏效。有时我买汽油是因为价格突然下降。所以在最后,这个方案是我可以考虑的一系列选择之一。
对于 Python 用户来说最重要的事情:不要在开车时编码!
4 条评论