我的代码如下:
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
答案 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