当变量等于if语句时,为什么python不会停止循环

时间:2017-03-21 21:04:38

标签: python loops

当我运行我的代码时,数字变成42.0(它应该做什么) 但是当它变成42.0时会停止(虽然if语句或while循环)我怎么能让我的代码停止?

import time
def life(inp):
    inp = float(inp)
    while float(inp) != float(42):
        inp = inp*12/4/4+4+6.5
        if float(inp) == float(42) or inp == 42:
            print inp
            break
        print inp
        time.sleep(0.1)


life(6)

1 个答案:

答案 0 :(得分:13)

因为不是 42.0,您可以通过Effect1来查看。然后你会看到你实际上被困在41.999999999999985789145284797996282577514648437500000000000000。

print '%.60f' % inp,显示41.999999999999986(不是确切的存储值,但显示它不是42.0)。

如果您只是print repr(inp)print inp,那么Python会显示该数字的“精美版本”,但这并不一定代表该数字。

您可能希望改为“足够接近”,例如:

print str(inp)

或查看this answer