Python队列整数除法错误 导入数学 随机输入 m=1.5亩 l=2λ c=3#控制/服务器数量 def单(m、l、c): p=(升/米) Po=(1-(升/米)) Ls=(l/(m-l)) Ws=(1/(m-l)) Wq=(l/(m*(m-l))) Lq=(l**2/(m*(m-l))) 退货(p、Po、Ls、Ws、Wq、Lq) def多功能(m、lm、mu): rho=lm/mu n=0 sm=0 而(n

Python队列整数除法错误 导入数学 随机输入 m=1.5亩 l=2λ c=3#控制/服务器数量 def单(m、l、c): p=(升/米) Po=(1-(升/米)) Ls=(l/(m-l)) Ws=(1/(m-l)) Wq=(l/(m*(m-l))) Lq=(l**2/(m*(m-l))) 退货(p、Po、Ls、Ws、Wq、Lq) def多功能(m、lm、mu): rho=lm/mu n=0 sm=0 而(n,python,Python,如果您使用的是Python 2,则可能是由于以下原因: Traceback (most recent call last): File "/home/schnipdip/Desktop/final_part1_chris_herzog.py", line 35, in <module> multiReturn=multi(3, 2, 1.5) File "/home/_____/Desktop/final_part1_.py", line 28, in multi

如果您使用的是Python 2,则可能是由于以下原因:

Traceback (most recent call last):
  File "/home/schnipdip/Desktop/final_part1_chris_herzog.py", line 35, in <module>
    multiReturn=multi(3, 2, 1.5)
  File "/home/_____/Desktop/final_part1_.py", line 28, in multi
    sm = sm + 1/(1/math.factorial(m))*(pow(rho,m)*m*mu/(m*mu-lm))
ZeroDivisionError: integer division or modulo by zero
从逻辑上讲,它没有多大意义:从数学上讲,
1/(1/x)
只是简单地拼写
x
的一种笨拙的方法。所以我打赌你的代码有一个逻辑错误

但是,在Python 2中,它也有一个编程错误:
/
应用于整数在Python 2中截断整数除法:

... 1/(1/math.factorial(m)) ...
为防止出现这种情况,请使用例如
1.0
而不是
1
强制浮点除法:

>>> import math
>>> m = 3
>>> math.factorial(m)
6
>>> 1 / math.factorial(m)
0

调试变量。错误是自解释的。此外,当我运行此操作时,我得到
NameError:name'Po'未定义
我知道有一个变量的值太低,以至于注册为0。但是,我不知道在哪里找到该值以及如何修复该值。在第二个方法中,Po应该保留注释。我不确定为什么会这样如果说方法一运行正常,那么就是方法二输出了一个我遇到问题的错误。为了便于调试,请在顶部添加一个
import pdb
,然后在给出错误的语句之前添加一个
pdb.set_trace()
。检查变量值是否与使用print命令期望的值相同(您可能想了解一下pdb)。您的代码在Python3中成功运行(在您修复变量之后)…在python2中,
(1/math.factorial(m))*(pow(rho,m)*m*mu/(m*mu lm))
返回为零这起作用了!谢谢您的回答:)我会将此标记为此问题的正确答案。看起来我需要更新Python…在Python 3中,
/
进行浮点除法(而
/
进行截断除法)。顺便说一句,请打破使用
l
(小写l)的习惯作为变量名。在许多字体中几乎无法区分整数1。我必须将您的代码粘贴到文本编辑器中,并将其转换为大写,以确保您确实使用了整数1;-)我也想要,但不幸的是,
l
代表lambda,l将由队列中的单元数表示。我应该把它改成磅之类的。这并不能真正解决问题。
>>> import math
>>> m = 3
>>> math.factorial(m)
6
>>> 1 / math.factorial(m)
0
>>> 1.0 / math.factorial(m)
0.16666666666666666