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