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
浙公网安备 33010602011771号