python怎么判断整数

13次阅读

判断整数需分三类:类型用isinstance(x, int);浮点数是否为整数值用f.is_integer();字符串是否为整数用try-except转int。

python怎么判断整数

python 中判断一个值是否为整数,关键看你想判断的是“数值类型”还是“字符串形式的整数”,两者方法不同。

判断变量是否为整数类型(int)

isinstance(x, int) 最准确、最推荐。它能正确区分 intFloatbool(注意:boolint子类isinstance(True, int) 返回 True)、以及自定义数字类型

  • isinstance(5, int)True
  • isinstance(-3, int)True
  • isinstance(3.14, int)False
  • isinstance("123", int)False

判断浮点数是否表示整数值(如 4.0、-7.0)

有时你拿到的是 float 类型,但想确认它“数学上等于某个整数”。可用 float.is_integer() 方法:

  • 4.0.is_integer()True
  • 4.5.is_integer()False
  • (8.0 / 2.0).is_integer()True

注意:该方法只适用于 float 对象,对 int 或字符串会报错。

立即学习Python免费学习笔记(深入)”;

判断字符串是否只包含整数(可选正负号)

比如 "123""-45" 是合法整数字符串,而 "12.3""abc""12a" 不是。推荐用 try/except + int() 转换尝试:

  • 安全可靠,兼容带符号、无前导零(除非是单个 "0"
  • str.isdigit() 更准(后者不支持负号,且对 "-123" 返回 False

示例:

def is_int_string(s):     try:         int(s)         return True     except (ValueError, TypeError):         return False 

is_int_string("123") # True is_int_string("-45") # True is_int_string("0") # True is_int_string("3.14") # False is_int_string("12a") # False

不推荐的方法(容易出错)

type(x) == int:绕过继承关系,无法识别子类(如某些 numpy 整数类型);
str.isdigit():不支持负数、空字符串、带空格或符号的字符串;
x == int(x):仅适用于数字类型,且对 float 有精度风险(如 1e17 + 0.1 可能被误判)。

text=ZqhQzanResources