type()函数有一个整数?

时间:2013-04-15 10:45:50

标签: python python-2.7

我一直在研究代码,其中一部分给我带来了很多麻烦。就是这样。

import math
number=raw_input("Enter the number you wish to find its square root: ")
word=number
if type(word)==type(int):
    print sqrt(word)

在IDLE中,每当我键入数字时,都不会打印任何内容。我在编辑器中检查了语法错误和缩进,并修复了所有错误。

2 个答案:

答案 0 :(得分:4)

您正在寻找isinstance()

if isinstance(word, int):

但这不起作用,因为raw_input()会返回字符串。您可能需要异常处理:

try:
    word = int(word)
except ValueError:
    print 'not a number!'
else:
    print sqrt(word)

对于您的具体错误,type(word) is int可能也有效,但这不是非常pythonic。 type(int)会返回int类型的类型,即<type 'type'>

>>> type(42)
<type 'int'>
>>> type(42) is int
True
>>> type(int)
<type 'type'>
>>> type(int) is type
True

答案 1 :(得分:1)

raw_input返回一个字符串。 您需要将输入转换为数字

in_string = raw_input("...")
try:
    number = float(in_string)
    print math.sqrt(number)
except ValueError as e:
    print "Sorry, {} is not a number".format(in_string)