在python中乘以几个变量

时间:2014-07-07 16:29:38

标签: python variables

我的代码如下:

box = raw_input('What is your box size')

op1 = float(box)*602,216,900,000,000,000,000,000

op2 = op1 * 1,000

print op2

我如何获得op的值1倍1,000而不是重复1,000次?当我使用float()参数时,我得到了

Traceback (most recent call last):
  File "<stdin>", line 5, in <module>
TypeError: float() argument must be a string or a number

2 个答案:

答案 0 :(得分:1)

简单地说:

op2 = op1 * 1000
有效的int声明中不允许使用逗号。

将此问题应用于整个问题:

box = raw_input('What is your box size')

op1 = float(box) * 602216900000000000000000

op2 = op1 * 1000

print op2

您的代码现在应该可以正常运行。这里有关于如何在python works中声明数字的更多背景。

答案 1 :(得分:1)

您发布的错误表明您在box变量中因用户输入而产生了不良影响,但代码中的实际问题是您正在创建{{3} },而不是大数字。

您尝试使用&#34; ,&#34;作为千元分隔符。在Python中的数字文字中不允许。相反,解析器将看到的是元组

op1 = (float(box)*602, 216, 900, 0, 0, 0, 0, 0)

如果您想将结果乘以1000,则仍必须省略逗号:

op1 = float(box) * 602216900000000000000000
op2 = op1 * 1000

...或者你最后得到上面的结果,在一个元组中,0作为第二个元素。


第二个问题是相同的,但如果你不熟悉Python中的元组和优先级如何工作,那就更难了。

让我们说我们修复了第一行,这样op1确实是一个浮点数(让我们说2.0)而不是一个元组。然后解释器遇到这一行:

op2 = 2.0 * 1,000

这相当于:

op2 = 2.0*1, 0  # We will assign a two-element tuple to the name "op2".

结果是:

op2 = (2.0, 0)  # The first element is now 2.0*1, and the second element is 0.

一旦解决了语法问题,您可能希望以更易识别的形式表示那些讨厌的文字,以清理代码:

op1 = float(box) * 6.022169 * 10**23

...甚至更好,把它放在一个变量中,这样你就可以在其他地方使用它并知道它到底发生了什么:

not_quite_avogadro_const = 6.022169 * 10**23
op1 = float(box) * not_quite_avogadro_const
相关问题