2
from fractions import Fraction

counter = 0;
a = int(raw_input())
b = int(raw_input())

if 1 <= a <= 10 ** 8:
    if a <= b <= 10 ** 8:
        for i in range(a, b+1):
            if float(i**Fraction(1,3)).is_integer() == True:
                counter += 1
                print(i)

print(str(counter))
print (str(float(64**Fraction(1,3)).is_integer()))

此代码返回 false 导致 if 语句根本不运行。此外,64 的立方根是 4,因此,结果应该是整数。但是,在 1 和 100 之间的范围内,1、8 和 27 在这种情况下返回 true。关于为什么 64 的立方根没有返回 true 的任何帮助将不胜感激。

4

1 回答 1

0

您已将 float 用于立方根值。以下代码为您提供了float(i**Fraction(1,3)) = 3.9999999

在将其转换为浮点数之前先尝试舍入该值。

if float(round(i**Fraction(1,3),2)).is_integer() == True:

于 2018-05-24T02:01:35.443 回答