4

我是使用 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: integer division or modulo by zero。

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

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

该语句中没有除数为零的地方。

请让我知道我需要如何更改表达式以获得答案 2831。请注意,我可以将变量的类型更改为浮点数或其他。感谢您的帮助!

4

3 回答 3

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到初始值。

于 2013-01-29T08:48:12.407 回答
1
from __future__ import division

而不是你的计算

它将导致除法返回浮点数

于 2013-01-29T08:48:55.990 回答
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)

几乎完全一样。

于 2019-03-05T21:34:55.697 回答