未知的math.sqrt错误

时间:2013-12-26 01:36:56

标签: python runtime-error

当我尝试这个时:

import math

g = input("Put your number here: ")

print ("The square root of you number is: " + int(math.sqrt(g)))

我写7作为我的输入本身,我收到此错误消息:

TypeError: a float is required

我非常感谢任何解决方案和指针。谢谢!

2 个答案:

答案 0 :(得分:2)

g = float(input("Put your number here: "))

使用input()可以获得字符串,但需要float(或int)。

答案 1 :(得分:2)

您收到TypeError,因为math.sqrt需要一个数字(浮点数或整数):

>>> import math
>>> math.sqrt(4.0)
2.0
>>> # Integers work too, even though the error message doesn't mention them
>>> math.sqrt(4)
2.0
>>> math.sqrt('4')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: a float is required
>>>

但是,input在Python 3.x中返回一个字符串对象:

>>> x = input()
7
>>> type(x)
<class 'str'>
>>>

这意味着当您将g提交给math.sqrt时,g将是一个字符串。


要解决此问题,您需要做两件事:

  1. 在将math.sqrt提供给>>> import math >>> g = int(input("Put your number here: ")) Put your number here: 7 >>> print ("The square root of you number is: " + str(int(math.sqrt(g)))) The square root of you number is: 2 >>> 之前,将print ("The square root of you number is: %d" % math.sqrt(g)) 设为。这可以使用intfloat完成。

  2. 将结果转换回字符串,将其添加到输出字符串中:

  3. 以下是演示:

    {{1}}

    但请注意,最后一行可以更清晰地重写:

    {{1}}