制作等级系统时仅能升级一次,后续无法正常运行的问题求助
问题分析与修复方案
核心问题
你的等级系统仅能完成一次升级,根源在于升级检查逻辑只在程序启动时执行了一次——后续用户通过输入"1"增加经验后,没有再次触发升级判断,导致经验不会自动扣除、等级无法继续提升。另外,经验需求计算使用浮点除法,可能引发精度误差。
代码修复
将升级检查逻辑封装为可重复调用的结构,每次增加经验后立即触发升级判断,同时改用整数运算避免浮点问题:
level = 1 crexp = 260 reqxp = 100 def check_upgrade(): global level, crexp, reqxp while crexp >= reqxp: level += 1 crexp -= reqxp # 用整数运算替代浮点计算,避免精度误差 reqxp = reqxp * 6 // 5 # 等价于 reqxp * 1.2,整数运算更稳定 # 初始化时先执行一次升级检查 check_upgrade() while True: pinput = input() if pinput == "1": crexp += 60 # 增加经验后立即检查是否满足升级条件 check_upgrade() elif pinput == "2": print(level) elif pinput == "3": print(crexp) elif pinput == "4": print(reqxp) elif pinput == "5": break
修复说明
- 封装
check_upgrade()函数,让升级逻辑可以在初始化和每次经验增加后重复调用,确保只要经验达标就会持续升级。 - 用
reqxp * 6 // 5替代浮点乘法,保证经验需求始终是整数,避免后续>=比较时出现不符合预期的精度问题。 - 将无限循环从
while 3 > 2改为更直观的while True,提升代码可读性。
内容的提问来源于stack exchange,提问作者Galaxycrasher 38
相关产品推荐
相关产品推荐

