麻烦在python中使用.is_integer()

时间:2016-03-24 20:20:47

标签: python

我正在尝试开发一个python脚本,它循环遍历我拥有的一组子目录,并从每个子目录中提取数据文件。我的子目录每个都以相应的时间命名,模拟我之前很开心。但是,问题是列出的整数子目录没有小数点(例如5),而非整数子目录列出了小数点。因此,为了找到正确的子目录,我的循环对数字类型非常敏感。

有了这个,我一直在尝试使用python的is._integer()方法,但我一直收到这个错误:

'int' object has no attribute 'is_integer'

当我运行以下代码时:

def frange(x, y, jump):
    while x < y:
        yield x
        x += jump

time=15

for i in frange(0,time,0.1):
    float(i)    
    print (i).is_integer() 

即使我粗暴地强迫我的循环变量成为浮点数!请帮忙。

3 个答案:

答案 0 :(得分:1)

尝试print(float(i).is_integer())

原因是,尽管您在使用i之前将float(i)(i).is_integer()一起投放,但它并未将i的变量类型变为{{ 1}}。

答案 1 :(得分:1)

float(i)

这会将参数i转换为float,但会返回该结果;它不会修改变量i。所以那个叫做的就是被丢弃了。

在您的情况下,在第一次迭代中,i0,这是一个实际的整数,整数对象没有is_integer方法。因此,您要么将float(i)的结果分配回i

for i in frange(0, time, 0.1):
    i = float(i)
    print (i).is_integer()

...或确保frange仅返回浮点数:

def frange(x, y, jump):
    x = float(x)
    while x < y:
        yield x
        x += jump

答案 2 :(得分:0)

您不会将转换值分配给变量。这应该有效:

public static byte[] hashSHA512(string unhashedValue)
{
    SHA512 shaM = new SHA512Managed();
    byte[] hash = shaM.ComputeHash(Encoding.UTF8.GetBytes(unhashedValue));
    return hash;

}

public static bool Validate(string enteredValue, byte[] hashedValue)
{
    byte[] hash = hashSHA512 (enteredValue);
    return (hash == hashedValue);
}