有没有办法从用户输入中检查其类型?并进行如下操作:
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!"
isinstance
的主要原因,也是我警告不要使用它的原因。"88"
而不是整数88
。但是,你可以使用这个模式来判断字符串是否只包含数字:if input.isdigit():
print "input is a number"
else:
print "input is not a number"
try:
number = int(input)
except ValueError:
print "input is not a number"
raw_input
始终返回一个字符串,而 input
(引用文档)是 eval(raw_input(prompt))
,因此它可以直接是一个整数。虽然我认为原始问题是关于 raw_input
的 :) - nvlassinput()
返回一个字符串,如果您想要的是eval(),则必须显式地进行)。不建议在Python 2.x中使用input()
。 - Andrew Gorcesterisinstance
http://docs.python.org/2/library/functions.html#isinstance。
例子
isinstance('hello', str)
返回 True
isinstance
。
你赢了,不过我的带有一个链接:
http://docs.python.org/2/library/functions.html#isinstance
另外,我一直在测试 PyCharm IDE,并且如果您在代码中使用assert isinstance()
,它们会自动为您进行类型检查,然后进行自动补全。 它还允许您在文档字符串中指定类型参数。 然后,它使用此类型信息来帮助您在以后完成自动完成。相当方便...
isinstance(input, type)
type
内置函数也可以实现相同的功能,但是建议使用 isinstance()
内置函数来测试对象的类型。
input
(尽管在Python 2中覆盖一个本来就不应该使用的内建函数也不是最糟糕的想法)。 - Wooble