Python 整数除法错误 - 除以零 - 但除数不为零

4 投票
3 回答
43542 浏览
提问于 2025-04-17 14:01

我刚开始用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

这段代码应该可以正常运行。以下是我的代码:

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)

几乎是完全一样的。

1
from __future__ import division

然后进行你的计算

这样会导致除法运算返回浮点数

13

可能你正在使用 Python 2.x,在这个版本中,x / y 是一种 整数除法

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

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

1 / 19 是一种 整数除法,结果是 0。所以这个表达式实际上和下面的意思是一样的:-

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

现在你明白错误是怎么来的了。


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

from __future__ import division

或者你可以把其中一个整数转换成浮点数,可以使用 float() 函数,或者直接在初始值后面加上 .0

撰写回答