python整数除法错误 - 以零为模 - BUT除数!= 0

时间:2013-01-29 08:46:31

标签: python division modulo

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

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

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:整数除法或模数为零。

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

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

这句话中没有任何一处是除数零。

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

3 个答案:

答案 0 :(得分:13)

您可能正在使用Python 2.x,其中x / yinteger division

所以,在下面的代码中: -

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

1 / 19integer division,结果为0。所以表达式基本上与: -

相同
( 20 + ( 0 / 19 ) ) ) / 0

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


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

from __future__ import division

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

答案 1 :(得分:1)

from __future__ import division

而不是你的计算

它会导致除法返回浮点数

答案 2 :(得分:0)

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

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)

几乎完全一样。