关于python:检查变量类型(int、float等)的if条件

If conditional that checks on variable type (int, float, ect)

python3:我想知道是否可以像通常那样设置if语句来执行一些代码。

但我想让语句变成这样:(psudo代码)

1
2
If variable1 !=="variable type integer":
    then break.

这有可能吗?谢谢你的帮助。

我很抱歉,如果这已经被解决,但搜索建议机器人没有任何帖子指向我。

杰西


通常,最好使用isinstance,因此您也接受像鸭子一样嘎嘎叫的变量:

1
2
3
4
5
6
7
8
9
10
11
>>> isinstance(3.14, int)
False
>>> isinstance(4, int)
True
>>> class foo(int):
...     def bar(self):
...         pass
...
>>> f = foo()
>>> isinstance(f, int)
True

您可以导入类型并对照它们检查变量:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> from types import *

>>> answer = 42

>>> pi = 3.14159

>>> type(answer) is int # IntType for Python2
True

>>> type(pi) is int
False

>>> type(pi) is float # FloatType for Python 2
True

对于更具体的情况,您将使用如下内容:

1
2
3
4
if type(variable1) is int:
    print"It's an int"
else:
    print"It isn't"

请记住,这适用于已经作为正确类型存在的变量。

如果,正如您在评论(if user_input !=="input that is numeric"中所指出的那样,您的意图是尝试并弄清楚输入的用户对给定类型是否有效,那么您应该尝试另一种方法,方法如下:

1
2
3
4
5
xstr ="123.4"             # would use input() usually.
try:
    int(xstr)              # or float(xstr)
except ValueError:
    print ('not int')      # or 'not float'