Python 强制变量为整数

Python 强制变量为整数,python,Python,我有上面的代码,我正试图用它来计算一些数据的整数(错误数)。我已经将我能看到的一切都转换为整数,但行“errors+=…”仍然附加值,而不是添加值 例如,如果我的答案是7,我可能得到500002。(5 + 0 + 0 + .. + 2). 我以前从未遇到过这种情况。函数binary\u compare也返回一个整数,但我完全不知道为什么这个函数不起作用。python不是javascript 当您从count=0开始执行count+=value时,无法获得串联字符串而不是数学求和。如果尝试将字符

我有上面的代码,我正试图用它来计算一些数据的整数(错误数)。我已经将我能看到的一切都转换为整数,但行“errors+=…”仍然附加值,而不是添加值


例如,如果我的答案是7,我可能得到500002。(5 + 0 + 0 + .. + 2). 我以前从未遇到过这种情况。函数binary\u compare也返回一个整数,但我完全不知道为什么这个函数不起作用。

python不是javascript

当您从
count=0
开始执行
count+=value
时,无法获得串联字符串而不是数学求和。如果尝试将字符串添加到整数,则会引发异常:

errors = int(0)
for i in range(len(expectedData)):
    if data[i] != expectedData[i]:
        errors += int(binary_compare(data[i], expectedData[i]))
return errors
要比较不知道是字符串还是整数的值,我使用

>>> x = 0
>>> x += "1"
TypeError: unsupported operand type(s) for +=: 'int' and 'str'
对于非整数证明的数学求和,您可能需要这样做

str(data[i]).strip() == str(expectedData[i]).strip()

python不是javascript

当您从
count=0
开始执行
count+=value
时,无法获得串联字符串而不是数学求和。如果尝试将字符串添加到整数,则会引发异常:

errors = int(0)
for i in range(len(expectedData)):
    if data[i] != expectedData[i]:
        errors += int(binary_compare(data[i], expectedData[i]))
return errors
要比较不知道是字符串还是整数的值,我使用

>>> x = 0
>>> x += "1"
TypeError: unsupported operand type(s) for +=: 'int' and 'str'
对于非整数证明的数学求和,您可能需要这样做

str(data[i]).strip() == str(expectedData[i]).strip()

我认为错误不在代码范围内,但无论如何,在Python中,列表操作很少使用循环来完成,因为它关注的是实现,而不是目的。列表理解、生成器等是首选,还有许多用于常见任务的内置和标准库函数

在您的情况下,我将把函数写成

try:
    value = int(expectedData[i])
except:
    value = 0
count += value

如果您使用的是Python2.x,那么应该使用,而不是
zip

我认为错误在您的代码之外,但是无论如何,在Python中,列表操作很少使用循环来完成,因为它关注的是实现而不是目的。列表理解、生成器等是首选,还有许多用于常见任务的内置和标准库函数

在您的情况下,我将把函数写成

try:
    value = int(expectedData[i])
except:
    value = 0
count += value

如果您使用的是Python2.x,则应使用而不是
zip

可能不相关,但我会使用
返回和(二进制\u比较(x,y)x,y在zip(数据,预期数据)中,如果x!=y)
。@Daenyth:在Python中除外≥3.@Dayneth:OP可能两者都不使用。我不能用完全相同的代码复制您看到的内容(用模拟的
二进制\u比较
函数和一对不匹配的字符串替换两个数据列表)。这就是问题所在的代码吗?@ahhtwer。由于没有人能够重现您的问题,“是的,这就是所有代码”的说法肯定是错误的。很有可能您以某种可怕的方式破坏了
int
函数。可能没有关联,但我会使用
返回和(如果x!=y,则在zip(data,expectedData)中x,y的二进制比较(x,y)
。@Daenyth:在Python中除外≥3.@Dayneth:OP可能两者都不使用。我不能用完全相同的代码复制您看到的内容(用模拟的
二进制\u比较
函数和一对不匹配的字符串替换两个数据列表)。这就是问题所在的代码吗?@ahhtwer。由于没有人能够重现您的问题,“是的,这就是所有代码”的说法肯定是错误的。您很可能以某种可怕的方式破坏了
int
函数。