Python字符串长度测量代码异常求助:输入数字错误计算长度
问题分析与修复方案
原代码核心问题
- input()返回值特性误解:Python中
input()函数无论输入数字还是字符,返回结果永远是字符串类型,所以你用type(Names) == str做判断,结果永远为True,导致逻辑完全颠倒——输入字符串时反而提示错误,输入数字时根本走不到计算长度的分支(且原逻辑本身和需求相反)。 - 逻辑判断完全反转:你的需求是「测量字符串长度,输入整数/浮点数时提示无法计算」,但原代码的判断逻辑是「如果是字符串就提示错误,否则计算长度」,完全搞反了。
修复后的代码
def str_length(s): return len(s) user_input = input("Enter = ") # 判断输入是否为整数或浮点数 is_number = False # 先尝试转换为整数 try: int(user_input) is_number = True except ValueError: # 整数转换失败,尝试转换为浮点数 try: float(user_input) is_number = True except ValueError: # 两次转换都失败,说明是普通字符串 pass if is_number: print("Sorry, integers don't have length") else: print(str_length(user_input))
代码说明
- 重命名了函数和变量,让语义更清晰(原函数名
Names_to_length不符合通用命名规范,改为str_length)。 - 通过两次
try-except判断输入是否可被解析为整数或浮点数:如果可以,说明用户输入的是数字,提示错误;如果不行,说明是普通字符串,调用函数计算长度。 - 修复了原代码的逻辑颠倒问题,完全匹配你的需求:输入数字时提示无法计算长度,输入字符串时返回长度。
内容的提问来源于stack exchange,提问作者Bassem Fawzy
相关产品推荐
相关产品推荐

