Python while循环实现书店积分程序及总积分、平均积分统计
Serendipity书店书友会积分计算程序修改方案
完整可运行代码
# 初始化统计变量:总参与用户数、累计发放总积分 total_user = 0 total_points = 0 print("=== Serendipity书店书友会积分计算系统 ===") print("提示:输入负数即可退出程序\n") # 循环接收用户输入,重复运行 while True: # 输入合法性校验,避免非数字输入导致程序崩溃 try: books = int(input("请输入当月购书数量:")) except ValueError: print("输入无效,请输入有效数字!\n") continue # 输入负数则终止循环,进入统计结果输出环节 if books < 0: break # 根据购书数量阶梯计算对应积分 if books < 2: point = 0 elif books < 4: point = 5 elif books < 6: point = 15 elif books < 8: point = 30 else: point = 60 # 输出单个用户的积分计算结果 print(f"您当月购书数量为:{books} 本") print(f"您可获得的奖励积分为:{point} 分\n") # 更新全局统计数据 total_user += 1 total_points += point # 循环终止后输出全局统计结果 print("=== 本次运行统计结果 ===") print(f"总参与用户数:{total_user} 人") print(f"累计发放总积分:{total_points} 分") # 增加除零判断,避免无有效用户时程序报错 avg_points = total_points / total_user if total_user > 0 else 0 print(f"用户人均获得积分:{avg_points:.2f} 分")
核心修改说明
- 循环外新增两个全局统计变量,分别记录有效参与的用户总数和累计发放的总积分
- 每次完成单个用户的积分计算后,同步更新两个统计变量的数值
- 新增输入合法性校验,避免用户输入非数字内容导致程序崩溃
- 循环终止后新增统计结果输出逻辑,增加除零判断适配无有效用户的场景
- 所有提示语优化为中文,输出结构分层,可读性更强
- 调整输入类型为整数,符合购书数量为正整数的实际业务场景
内容的提问来源于stack exchange,提问作者Harvey Hardy
相关产品推荐
相关产品推荐

