2012-03-08 42 views
2

这里是代码...的Python(2.X)乘法是没有发生正常

a=4 
b=8.0 
if a and a >0: 
    a=a*int(b) 
    print "Value:",a 

所需的O/P应该是32.我也越来越在python控制台一样。但是同样的代码出现在我的产品中,而不是32的输出是44444444(八四),即无论什么价值我给与“a”乘以它只是打印这么多a的。如果你给12,那么会打印十二个四。

任何想法是什么问题?

+4

代码不完全一样,例如在你的“产品”。显示你“提供价值”的部分。 – 2012-03-08 12:01:14

回答

10

我敢打赌你100 bob在你的产品a其实不是整数4,而是字符串'4'。

>>> a = '4' 
>>> b=8.0 
>>> if a and a >0: 
...  a=a*int(b) 
...  print "Value:",a 
... 
Value: 44444444 

这可能会发生,例如,如果你正在使用类似a = raw_input('Please enter a number: '),然后你忘了字符串a转换成一个数字。

+0

谢谢Wim,对!它通过某个函数获取的值,其默认返回值是String。呃小小的错误! – Reuben 2012-03-08 12:10:43

6

“一个”必须在你的代码的字符串:

>>> a = 4 
>>> b = 8 
>>> a * b 
32 
>>> a = "4" 
>>> a * b 
'44444444' 
>>> int(a) * b 
32 
+0

谢谢维诺,对!它通过某个函数获取的值,其默认返回值是String。呃愚蠢的错误! – Reuben 2012-03-08 12:11:26

4

这看起来像a是一个字符串,而不是一个整数。试试这个:

a = int(a) * int(b) 

希望帮助