连续购买程序异常:钱包余额耗尽后仍持续涨价需修复
连续购买程序余额耗尽后仍持续涨价的问题排查与修复
问题概述
开发的连续购买程序需求为:每次完成购买操作后商品价格上涨100,直至客户钱包余额耗尽时程序终止。但当前程序存在异常:当钱包余额耗尽后,程序仍会持续多次提升价格,直到价格超过1000才停止。
问题根源分析
- 循环条件错误:原代码使用
price <= 1000作为循环终止条件,而非判断钱包余额是否能覆盖当前价格。这导致余额耗尽后,只要价格未超过1000,循环就会继续执行并持续涨价。 - 涨价时机不符合需求:无论用户是否完成购买,每次循环都会执行
price += 100,违背了“仅在完成购买操作后涨价”的要求。 - 终止逻辑滞后:只有当价格超过1000时才触发终止提示,没有在余额不足时立即终止程序。
修复后的代码
wallet = int(input("wallet = ")) price = 100 print("price = " + str(price)) while wallet >= price: ask = input('would you like to purchase again? (y/n)') if ask.upper() == "Y": wallet -= price print(f"you now have {wallet} left") price += 100 print(f'new price = {price}') elif ask.upper() == "N": print("transaction cancelled") break else: print("invalid reply") # 输入无效时不涨价,重新发起询问 continue print("you do not have enough money to purchase more")
修复说明
- 调整循环条件:将
while price <= 1000改为while wallet >= price,确保只要余额不足以购买当前价格,循环立即终止。 - 修正涨价时机:仅在用户确认购买(输入Y)后执行
price +=100,严格遵循“完成购买后涨价”的需求。 - 优化用户交互逻辑:用户输入N时直接终止循环;输入无效时不涨价,重新发起询问。
- 简化变量操作:直接使用
wallet -= price替代多余的left变量赋值,让代码更简洁。
内容的提问来源于stack exchange,提问作者Jayesh Kahnani
相关产品推荐
相关产品推荐

