如何仅统计有效整数输入?Python计数逻辑Bug修复
解决无效输入被计入统计次数的问题
你的问题出在统计次数的时机不对:当前代码里,count = int(count) + 1是在尝试把输入转成整数之前执行的——哪怕输入是无效内容(比如"bla bla car"),这行代码已经跑完了,所以错误地累加了count。
修改思路很简单:只有当输入成功转换成整数后,再更新count和total的值,同时把判断'done'的逻辑移到try块外面(毕竟输入'done'是合法的终止指令,不需要走异常捕获)。另外建议不要用裸except,明确捕获ValueError更安全,避免意外捕获其他类型的错误。
修改后的代码如下:
count = 0 total = 0 avg = 0 while True: line = input('Enter a number: ') # 先处理终止指令,无需进入异常捕获逻辑 if line == 'done': break try: # 先尝试将输入转为整数,失败直接触发异常 num = int(line) # 只有转换成功才更新统计数据 count += 1 total += num avg = total / count except ValueError: print('Invalid input') continue print(total, count, avg)
测试你给出的输入序列:5、4、7、"bla bla car"、"done",输出会是16 3 5.333333333333333,完全符合预期。
内容的提问来源于stack exchange,提问作者sandramsc
相关产品推荐
相关产品推荐

