Python整数测试

2024-06-26 14:10:38 发布

您现在位置:Python中文网/ 问答频道 /正文

def isinteger(x):
    while x > 0.0:
        x = x - 1.0
    if x < 0.0:
        return 0.0
    elif x == 0:
        return 1.0

d = input('')
print isinteger(d)

这个代码有点不言自明。我用它来解释fractran。我的问题是:我输入一个分数,比如22/7,我的输出是1。这和python的IO有关吗?在


Tags: 代码ioinputreturnifdef分数print
3条回答

input函数对22/7的求值方式与输入到python解释器中的方式完全相同。因为22和7都是整数,所以得到的结果是3的整数除法。如果需要浮点除法,请输入22.0/7或{},这两个结果都是3.146...。在

除了22.0/7vs22/7之外,这种方法还有一个问题:由于the way floating point numbers are represented,它在大多数编程语言中都不起作用。例如,使用原始函数:

In [37]: isinteger(190.000000000000000001)
Out[37]: 1.0

使用肖恩的建议:

^{pr2}$

我知道它不能直接解决这个问题,但我希望它能阻止未来的问题:)

如果您使用的是python2,那么输入“22/7”将直接导致整数除法,也就是说,它将您的输入舍入到3,因此算法返回1。尝试输入22.0/7。在

另外,如果您要将其用于任何实际情况,您可能需要考虑使用该算法的更快的替代方案。可能性:

def isinteger(x):
    return int(x) == x

def isinteger(x):
    return isinstance(x, int)

相关问题 更多 >