我正在尝试开发一个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()
即使我粗暴地强迫我的循环变量成为浮点数!请帮忙。
答案 0 :(得分:1)
尝试print(float(i).is_integer())
原因是,尽管您在使用i
之前将float(i)
与(i).is_integer()
一起投放,但它并未将i
的变量类型变为{{ 1}}。
答案 1 :(得分:1)
float(i)
这会将参数i
转换为float,但会返回该结果;它不会修改变量i
。所以那个叫做的就是被丢弃了。
在您的情况下,在第一次迭代中,i
是0
,这是一个实际的整数,整数对象没有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);
}