Python如何实现函数判断输入str对象属于int、double或普通字符串类型
Python字符串实际类型判断函数修正方案
原有代码的问题
- 返回值不符合要求:需求要求返回
'int'/'double'/'str',原有代码返回的是'integer'/'double'/'string',命名不匹配 - 整数判断逻辑缺陷:
str.isdigit()方法无法识别带负号的整数(比如"-123"),会将合法负整数误判为浮点数;同时elif value.isdigit() == 0的写法冗余且不规范,直接用else分支即可 - 逻辑顺序不合理:先做数字判断再尝试转浮点数的逻辑,无法覆盖带符号的整数场景
修正后的代码
def input_type(value: str) -> str: # 优先判断是否为整数(兼容负整数) try: int(value) return 'int' except ValueError: pass # 再判断是否为浮点数 try: float(value) return 'double' except ValueError: return 'str'
逻辑说明
- 优先尝试将输入字符串转为int:只要转换成功就直接返回
'int',完美覆盖正整数、负整数场景,避免了isdigit()的判断缺陷 - 整数转换失败后尝试转float:转换成功返回
'double',支持普通小数、科学计数法等合法浮点数格式 - 两种转换都失败则返回
'str',完全匹配需求的返回值要求 - 常见场景测试结果:
- 输入
"123"返回'int' - 输入
"-456"返回'int' - 输入
"123.45"返回'double' - 输入
"1e3"返回'double' - 输入
"abc123"返回'str'
- 输入
内容的提问来源于stack exchange,提问作者sho'
相关产品推荐
相关产品推荐

