Python无列表实现数字正负零统计的循环逻辑问题求解
Python循环数值统计实现方案
原代码问题梳理
- 循环条件完全错误:
while(n<0)的触发前提是第一个输入为负数,输入正数、零时循环根本不会执行,且没有设置循环次数控制,无法满足固定接收10个输入的要求 - 判断逻辑错位:用
n%2 ==0识别正数是混淆了偶数判断和正数判断,2.1、25这类非偶正数无法被识别;计数时没有更新初始化的pos/neg/zero变量,反而新建临时变量,计数完全不生效 - 输入逻辑缺失:仅在循环外接收了1次输入,循环内没有重复接收输入的代码,无法实现逐次输入10个数值的要求
- 输出逻辑混乱:题目要求最终统一输出三类数值的总数,原代码在循环内打印中间值,不符合输出要求
实现逻辑说明
- 不需要把输入值本身作为循环判断条件,直接用独立的计数变量控制循环次数,跑满10次输入就终止循环,完全覆盖正数、负数、零所有输入场景
- 每次拿到输入后统一转为
float类型,兼容整数、小数输入;直接通过和0的大小关系完成分类,对应计数器自增即可 - 全程只用到三个计数器和一个循环控制变量,不需要使用列表,完全符合题目要求
正确代码
# 初始化三类数值的计数器 pos = 0 # 正数计数 neg = 0 # 负数计数 zero = 0 # 零计数 # 循环控制变量,记录已接收的输入个数 input_count = 0 while input_count < 10: # 每次循环接收1个输入,转为float兼容整数、浮点数 current_num = float(input()) # 按数值和0的关系分类计数 if current_num > 0: pos += 1 elif current_num < 0: neg += 1 else: zero += 1 # 已接收输入数+1 input_count += 1 # 按要求分三行依次输出结果 print(pos) print(neg) print(zero)
效果验证
逐次输入测试用例:25、2.1、-19、5、0、-3.2、6、0、100、-7,统计结果为5个正数、3个负数、2个零,代码运行后会依次输出5、3、2,结果完全正确。
内容的提问来源于stack exchange,提问作者Murilo
相关产品推荐
相关产品推荐

