在一个不起作用的while循环中进行索引蟒蛇

时间:2017-05-01 21:40:59

标签: python python-2.7 loops while-loop

我正在做这个程序,我给了一个朱利安日期,所以我可以计算格林威治的侧面时间。 在进行计算之后,GST可能是一个非常大或非常小的值。 部分过程是我必须(加或减)GST因子为24,这样我的值就在0到24之间(因为它是时间)。

我打算做一个while循环,以便它保持减去,直到它是(0到24)之间的值,但我似乎找不到它的工作方式。

T = (JD-2451545.0)/36525.0 
GST = 6.697374558 + (2400.051336*T) + (0.000025862*T*T) + (GMT*1.0027379093)

while GST>24:
    GST = GST - 24
    if GST<24:
        break
        print GST

3 个答案:

答案 0 :(得分:3)

该计划正在按计划运作。在实际打印任何内容之前,你没有看到它。在break语句后添加print

此外,由于GST是时间,因此不能等于24(小时从0023)。我建议将循环条件更改为松弛不等式(>=)而不是严格的(>)。

while GST >= 24:
    GST = GST - 24
    if GST<24:
        print GST
        break

使用模(%)运算符可以更有效地实现您尝试做的事情。因此,上面的块减少到:

GST %= 24
print GST

答案 1 :(得分:1)

为什么不使用% remiander运算符。 %运算符将第一个数字与第二个数字分开并返回remiander,您正在执行相同操作。你只是每次迭代时将24除去因子为1,当它变得小于24时,即不能被24整除,你就会中断。通过查找余数,您可以通过一行获得完全相同的值。

>>> 1000 % 24 = 16
>>> 199999 % 24 = 7

你总是会得到一个小于24的值。所以如果你想得到24,那么将24替换为25,即一个大于限制

>>> GST = GST % 24

答案 2 :(得分:1)

你可以这样做:

while GST > 24:
    GST -= 24  # Trick for assigning GST to (GST-24) 

print GST

一旦满足条件,这将自动中断循环。无需if语句或break语句。