带有最小和最大条件Python的while循环

Posted

技术标签:

【中文标题】带有最小和最大条件Python的while循环【英文标题】:While loop with min and max conditions Python 【发布时间】:2020-03-19 20:51:43 【问题描述】:

我想在最终充电至少 75% 的条件下为汽车充电,如果价格为正,我希望它继续充电,但不超过 100% 的最大值。价格列表是我每次充电(或决定不充电)时的价格。

这就是我目前所拥有的:

maxF = 100
minF = 75
SoC = 55
i = 0
chargeRate = 10
price = [2,-2,3,4]

while SoC < minF:
   if price[i] > 0:
       SoC += chargeRate
       i += 1
   # if there is no time left (no prices available), I have to charge in order to reach 75%
   elif (minF - SoC)/chargeRate <= (len(price) - i):
       SoC += chargeRate
       i += 1
   else:
       i += 1
print(SoC)

在这段代码中,汽车收取 2 和 3 的价格,而不是 4。我不知道如何包括让汽车在超过 75% 后继续充电。

我很乐意提供任何建议。

非常感谢, 埃琳娜

【问题讨论】:

如果您指定了SoC &lt; minF,您的while 循环将停止。你打算如何处理变量prices 不是您的问题的一部分,但由于您在if 语句的所有可能条件中都有i += 1,因此您应该在if 之外使用它一次 【参考方案1】:

据我了解,您应该尝试以下代码:

 while SoC <= 100:
   if (i < len(price)) and (SoC < 75 or price[i] > 0):
       SoC += chargeRate
   else:
       break
   i+=1
 print(SoC)

这应该适合你。我不确定你想用这条线做什么

elif (minF - SoC)/chargeRate &lt;= (len(price) - i):

【讨论】:

我从您的代码中收到“列表索引超出范围”错误。 @Elena 我的错。我已经更新了答案,这应该可以工作。 有效!太感谢了!我刚刚添加了while SoC + chargeRate &lt;= 100,因此在该迭代中充电不会超过 100。 乐于助人!请接受答案,以便关闭问题。

以上是关于带有最小和最大条件Python的while循环的主要内容,如果未能解决你的问题,请参考以下文章

While 循环条件在:复合条件表达式 AND'd [python]

Python while结构语句?

如何在while循环中找到最大值和最小值 - c

Stroustrup C++ 书籍。如何跟踪while循环中哪个整数输入最小和最大?

Python3

带有双条件和 || 的 While 循环Swift 中的逻辑运算符