Python 整数除法错误 - 除以零 - 但除数不为零
我刚开始用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
。