有没有办法从用户输入检查它是什么类型?并做这样的事情:
if input == str:
do this
elif input == int:
do this
else:
do this
答案 0 :(得分:5)
您可以使用isinstance
来检查某些内容的类型 - 但您可能真的不想这样做...
这也很大程度上取决于您如何从用户那里获得输入。如果您使用的是raw_input
,那么它始终是一个字符串,您需要try
将其转换为您想要的任何类型:
try:
x = int(input):
except ValueError:
try:
x = float(input):
except ValueError:
print "No recognizable type!"
python的一个基本原则是鸭子打字。如果一个物体看起来像一只鸭子,听起来像一只鸭子,闻起来像一只鸭子,那么它就是一只鸭子(前提是你只关心物体的外观,气味和声音)。最终,在python中,最好try
看看它是否是“鸭子”。如果它不是鸭子,那么你捕获异常并处理它(如果你知道如何)。这是您没有看到人们在代码中使用isinstance
的主要原因以及我警告不要使用它的主要原因。
答案 1 :(得分:1)
如果您的意思是键盘输入,那么所有输入都是一个字符串。即使用户输入类似“88”的数字,结果也是字符串"88"
而不是整数88
。但是,您可以使用此模式来判断字符串是否包含数字,而不是其他内容:
if input.isdigit():
print "input is a number"
else:
print "input is not a number"
更好的是将输入转换为数字,这将处理注释中提到的“50.0”或“-10”之类的输入(如果小数有效,则使用float()或Decimal()而不是int ()这里):
try:
number = int(input)
except ValueError:
print "input is not a number"
如果您不是指键盘输入,那么有多种方法可以检查类型,但一般来说,最好的办法是简单地使用输入,就像它有效一样,并捕获将出现的异常无效。这样,您可以根据对象的实际方法和属性来定义输入要求,而不仅仅是它的名义类(这是“鸭子打字”)。
答案 2 :(得分:1)
您可以使用isinstance
http://docs.python.org/2/library/functions.html#isinstance
例如
isinstance('hello', str)
返回 True
答案 3 :(得分:0)
我认为你正在寻找isinstance
。
你打败了我,但是我的链接:
http://docs.python.org/2/library/functions.html#isinstance
顺便说一句,我一直在试驾PyCharm IDE,如果您在代码中assert isinstance()
,他们会自动为您进行类型检查,然后进行自动完成。它还允许您在docstring中指定类型参数。然后,它使用此类型信息来帮助您完成自动完成。非常方便......
答案 4 :(得分:0)
isinstance(input, type)
type
内置函数也可以这样做,但建议使用isinstance()
内置函数来测试对象的类型。