python - 创建具有最大和最小限制的运行总计
问题描述
我正在计算电网模拟器中电池存储的运行总量。
在遍历每一行时,我需要将前一个值添加到前surpluses
一个值 ([i-1]) 的battery
最大存储容量为s
surpluses
通常为负数,因此通常会降至最低为 0
我需要从第二个值开始迭代,因为第一个值是 s
我创建了一个系列battery
来迭代并尝试了以下
surpluses
也是一个系列
for i, item in battery.iteritems()[1]:
if (battery[i-1] + surpluses[i-1]) < 0:
battery[i] = 0
elif (battery[i-1] + surpluses[i-1]) > s:
battery[i] = s
else:
battery[i] = battery[i - 1] + surpluses[i - 1]
因此,例如我想使用s = 5
as battery[0]
thenbattery[1] = battery[0] + surplus[0]
等等。
surpluses
-1
-2
1
-4
battery
5
4
2
3
0
在这种情况下,5 是最大值,0 是最小值,这就是为什么我有 if 语句来防止运行总数离开这个范围。
当前错误
if (batteryStorage[i-1] + surpluses[i-1]) < 0:
TypeError: unsupported operand type(s) for -: 'str' and 'int'
和
for i, item in batteryStorage.iteritems()[1]:
TypeError: 'zip' object is not subscriptable```
解决方案
我终于弄明白了。使用 enumerate 允许在索引 i 处引用其他系列。
for i, index in enumerate(batteryStorage, start=1):
if i > len(batteryStorage) - 1:
break
elif (batteryStorage[i - 1] + surpluses[i - 1]) < 0:
batteryStorage[i] = 0
elif (batteryStorage[i - 1] + surpluses[i - 1]) > inp.batteryStorage:
batteryStorage[i] = inp.batteryStorage
else:
batteryStorage[i] = round(batteryStorage[i - 1] + surpluses[i - 1],0)
推荐阅读
- c++ - ++x 和 x++ 如何在 C++ 中的方程式中共同发挥作用
- cudd - 使用多值 DD 求解多状态可靠性量化
- laravel - Laravel - 在 GoDaddy 服务器上创建动态通配符子域
- python - django rest框架中的“getattr():属性名必须是字符串”
- java - 在httpclient jar中通过SSLConnectionSocketFactory连接时出现NoSuchMethodError,如何用新的httpclient jar覆盖旧的gwt httpclient
- proxy - Apache 反向代理适用于“/”,但不适用于“/foo”
- swiftui - 如何在 SwiftUI 中删除 Navigation Link > 符号?
- android - 在android中使用指南的缺点?
- c# - 内容管理器未检测到 Monogame 自定义导入器/处理器
- snowflake-cloud-data-platform - 如何检查是否为雪花表启用了 CHANGE_TRACKING?