关于python integer division error:python integer division error – modulo by zero – BUT除数!= 0

python integer division error - modulo by zero - BUT divisor != 0

我刚开始使用python进行简单的数学运算,所以如果这是一个愚蠢的问题,我很抱歉。

我有8个变量都设置为整数,这些整数在执行简单计算时使用。

1
2
3
4
5
6
7
8
9
10
11
12
a = 0
b = 17
c = 152
d = 1
e = 133
f = 19
g = 20
h = 0

answer = ( ( ( a / f ) + b + c ) - ( g + ( h / f ) ) ) / ( d / f )

print answer

当我运行这段代码时,我得到了错误,zerodivisionerror:整数除以或模除以零。

我已经读过这个错误,所有的文档都指向我的除数为零,但是如果我用数字作为字符串来代替变量打印这个,我会得到:

1
( ( ( 0 / 19 ) + 17 + 152 ) - ( 20 + ( 0 / 19 ) ) ) / ( 1 / 19 )

这个语句中没有除数零的地方。

请告诉我如何改变我的表达,以得到答案2831。请注意,我可以将变量的类型更改为float或其他类型。谢谢你的帮助!


可能您使用的是Python 2.x,其中x / yinteger division

因此,在下面的代码中:

1
( 20 + ( 0 / 19 ) ) ) / ( 1 / 19 )

1 / 19是一个integer division,产生0。因此,表达式基本上与-

1
( 20 + ( 0 / 19 ) ) ) / 0

现在您可以看到错误的来源了。

您可以在python代码中添加以下导入,以强制执行浮点除法:

1
from __future__ import division

或者您可以使用float()或只是将.0添加到初始值,将其中一个整数强制转换为浮点。


1
from __future__ import division

比你的计算还要多

它将导致分区返回浮动


这应该有效。以下是我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
a = 0
b = 17
c = 152
d = 1
e = 133
f = 19
g = 20
h = 0

answer = ( ( ( a / f ) + b + c ) - ( g + ( h / f ) ) ) / ( d / f )

print(answer)

几乎完全一样。