一个Python程序,我调试具有下面的代码(包括print
报表调试):Python:为什么变量没有更新?
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"])
,直到这一点,变量更新正确。当我运行的代码,我得到的屏幕上显示如下:
BEFORE...
oup["0"] = 22032
oup["2008"] = 541
oup["2009"] = 15223
ouptotal = 15764
AFTER...
oup["0"] = 22032
oup["2008"] = 541
oup["2009"] = 15223
为什么不OUP [ “2008”]和OUP [ “2009”]更新?
(Python版本是2.6.2一个“Jaunty的” Ubuntu的机器上。)
从有意*学习Python的人的角度来看,有一天,'oup [2008]'与'oup [“2008”]'一样吗? – pavium 2010-01-06 02:18:37
编号int索引和str索引是不同的。 – 2010-01-06 02:20:08
我删除了打印的“oup [2008]”,因为它可能令人困惑。 – 2010-01-06 02:21:44