Chi*_*Uni 0 python variables integer
我正在调试的python程序具有以下代码(包括print用于调试的语句):
print "BEFORE..."
print "oup[\"0\"] = " + str(oup["0"])
print "oup[\"2008\"] = " + str(oup["2008"])
print "oup[\"2009\"] = " + str(oup["2009"])
oup0 = oup["0"]
oup2008 = oup["2008"]
oup2009 = oup["2009"]
ouptotal = oup2008 + oup2009
print "ouptotal = " + str(ouptotal)
if ouptotal > 0:
oup["2008"] = oup2008 + oup0 * (oup2008 / ouptotal)
oup["2009"] = oup2009 + oup0 * (oup2009 / ouptotal)
print "AFTER..."
print "oup[\"0\"] = " + str(oup["0"])
print "oup[\"2008\"] = " + str(oup["2008"])
print "oup[\"2009\"] = " + str(oup["2009"])
Run Code Online (Sandbox Code Playgroud)
到那时为止,变量正确更新.当我运行该代码时,我在屏幕上看到以下内容:
BEFORE...
oup["0"] = 22032
oup["2008"] = 541
oup["2009"] = 15223
ouptotal = 15764
AFTER...
oup["0"] = 22032
oup["2008"] = 541
oup["2009"] = 15223
Run Code Online (Sandbox Code Playgroud)
为什么不是oup ["2008"]和oup ["2009"]更新?
("Jaunty"Ubuntu机器上的Python版本是2.6.2.)
如果值是整数,那么(oup2008 / ouptotal)将为零,因此它们将更新为它们自己的值+ 0,因此没有变化.
将它们转换为浮点数进行计算,然后在需要时返回,并且它应该按预期工作.
例:
oup["2008"] = oup2008 + int(oup0 * (float(oup2008) / ouptotal))
Run Code Online (Sandbox Code Playgroud)