繁体   English   中英

减去一个不起作用的while循环| 蟒蛇

[英]Substracting in a while-loop that won't work | Python

我正在执行此程序,并为其指定了朱利安日期,以便可以计算格林威治标准时间。 完成计算后,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

该程序正在正常工作。 您看不到它,因为您在实际打印任何内容之前中断了循环。 print语句后添加break

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

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

通过使用模( % )运算符,可以以更有效的方式实现您要执行的操作。 因此,以上代码块简化为:

GST %= 24
print GST

为什么不使用% remiander运算符。 %运算符将第一个数字除以第二个数字,然后返回remiander,您也是如此。 您每次迭代只删除24乘以1的因数,当它变得小于24时,即无法进一步除以24,您将破产。 通过查找余数,可以用一行获得完全相同的值。

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

您将始终获得小于24的值。因此,如果您也想获得24,则将25替换为24,即比限制大1。

>>> GST = GST % 24

你可以做:

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

print GST

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM