Python运行计数无法保留,触发stop后求和结果始终为0求助
问题分析与修复
你的代码存在三个核心问题,直接导致统计数值为0且逻辑混乱:
1. 类型判断写法错误
n == ('Commercial' or 'commercial') 这种写法在Python里不生效——'Commercial' or 'commercial'的运算结果是'Commercial'(非空字符串为真值,or运算会返回第一个真值),所以只有输入严格等于'Commercial'时才会累加,小写的commercial完全不会被识别,同理住宅类型的判断也存在同样问题。
2. 输入'stop'后未终止循环
当输入n = 'stop'时,代码只打印了汇总结果,但没有跳出循环,会继续执行后续的m = float(input()),导致程序仍要求输入税费,且此时n为stop,统计逻辑根本不会触发。
3. 无输入异常处理
如果输入税费时不小心输入了非数字内容,程序会直接崩溃,中断统计流程。
修复后的代码
print('Property Type Taxes') totalC = 0.0 # 商业地产总税费 totalR = 0.0 # 住宅地产总税费 while True: n = input().strip() if n.lower() == 'stop': print('Sum of Taxes Average of Taxes') print('Residential Properties ', totalR) print('Commercial Properties ', totalC) break # 跳出循环,终止程序 try: m = float(input()) except ValueError: print("请输入有效的税费数字!") continue print(n, ' ', m) # 不区分大小写判断物业类型 if n.lower() == 'commercial': totalC += m elif n.lower() == 'residential': totalR += m else: print("未知物业类型,不计入统计")
关键修改点
- 用
n.lower()统一转换为小写后判断,兼容任意大小写的输入(比如Commercial/commercial/COMMERCIAL都能被识别) - 输入
stop后通过break终止循环,避免后续代码干扰统计结果 - 新增
try-except捕获非数字输入的异常,防止程序崩溃
内容的提问来源于stack exchange,提问作者squall1214
相关产品推荐
相关产品推荐

