如何检测序列中的数值(整数/浮点数)并统计数量?
问题分析与修复方案
你的代码核心问题是没有真正用自己写的判断函数识别数值,依然依赖只能识别正整数的isnumeric(),导致浮点数、带负号的数值无法被统计,同时也没实现“无数值时返回no number”的需求。
修复后的代码
def is_number(item): try: float(item) return True except ValueError: return False series = input('Enter a series of numbers separated by a space:').split() count_numbers = 0 count_non_numeric = 0 for item in series: if is_number(item): count_numbers += 1 else: count_non_numeric += 1 if count_numbers == 0: print("no number") else: print('Amount of numbers: ', count_numbers) print('Amount of non-numeric values: ', count_non_numeric)
关键改动说明
- 把判断函数改成返回布尔值的
is_number,明确捕获ValueError(避免无差别捕获所有异常),能转成浮点数就返回True,否则返回False,适配整数、浮点数、带负号的数值。 - 循环时用
is_number(item)替代isnumeric()作为判断依据,解决浮点数无法统计的问题。 - 最后增加判断逻辑:如果统计到的数值数量为0,输出
no number;否则正常输出统计结果。
内容的提问来源于stack exchange,提问作者Luna X
相关产品推荐
相关产品推荐

