Python代码可正常输出列表最大值,却无法打印列表负数是什么原因?
问题原因
- 核心bug出在输入校验逻辑:Python的
str.isnumeric()方法仅对纯数字字符返回True,带负号的字符串(例如"-12")会被判定为非数值,你输入的所有负数根本没有被添加到user_values列表中,后续自然无法打印。 - 附带的逻辑漏洞:你初始化最大值
maxim为0,如果用户输入的所有数值都是负数,最终输出的最大值会错误返回0,而非列表内的实际最大值。 - 潜在报错风险:如果用户没有输入任何有效数值就输入q退出,调用
min(user_values)会直接抛出空序列报错。
修复代码示例
user_input = '' user_values = [] while True: user_input = input('input:') if user_input.lower() == 'q': break # 改用异常捕获处理正负整数输入 try: num = int(user_input) user_values.append(num) except ValueError: print("请输入有效整数或q退出") # 非空判断避免报错 if user_values: # 直接用内置max、min函数更简洁,无需自己遍历计算 maxim = max(user_values) print( "the maximum value in the list is : " , maxim) minimum_value = min(user_values) print( "the minimum value in the list is : " , minimum_value) print("the negative values are:") for value in user_values: if value < 0: print(value) else: print("未输入任何有效数值")
内容的提问来源于stack exchange,提问作者Davey Jones
相关产品推荐
相关产品推荐

