isdigit()不能判断负数
Python 中的 isdigit()
方法 是字符串对象的一个方法,用于检查字符串中的所有字符是否都是数字字符(0-9)。如果字符串中包含负号(-
)或其他非数字字符(如小数点 .
),isdigit()
会返回 False
。
1. isdigit()
的行为
-
isdigit()
只能识别 Unicode 数字字符(0-9)。 -
如果字符串中包含负号(
-
)、小数点(.
)或其他非数字字符,isdigit()
会返回False
。 -
空字符串也会返回
False
。
示例:
print("123".isdigit()) # True print("-123".isdigit()) # False(包含负号) print("12.3".isdigit()) # False(包含小数点) print("abc".isdigit()) # False(包含字母) print("".isdigit()) # False(空字符串)
2. 为什么 isdigit()
不能判断负数?
isdigit()
的设计初衷是检查字符串是否完全由数字字符组成。负号(-
)和小数点(.
)不是数字字符,因此它们会导致 isdigit()
返回 False
。
3. 如何判断字符串是否可以表示负数(或浮点数)?
方法 1:使用 try-except
和类型转换
通过尝试将字符串转换为 int
或 float
,如果转换成功,则说明字符串可以表示数字(包括负数和浮点数)。
示例:
def is_number(s): try: float(s) # 尝试转换为浮点数 return True except ValueError: return False print(is_number("123")) # True print(is_number("-123")) # True print(is_number("12.3")) # True print(is_number("abc")) # False print(is_number("")) # False