Python技能等级提升函数求助:全局变量更新与输出优化
技能升级函数问题解决:全局变量更新失败及输出优化
问题根源
- 全局变量无法更新:原函数中
lvl是局部变量,传递的是全局变量的副本,修改局部变量不会同步到全局变量(Python整数是不可变类型,参数传递为值传递)。 - 输出不符合要求:未显示对应EXP变量名称,升级后的下一级目标EXP计算错误(原代码输出的是升级前的目标值)。
优化方案
使用字典统一管理技能等级和EXP,避免零散的全局变量,同时让函数能直接修改全局状态,输出也更清晰。
完整代码
# 用字典统一管理技能等级和对应EXP skills = { 'walking': 1, 'running': 1, 'eating': 1, 'driving': 1, 'biking': 1 } skill_exps = { 'walking': 160, 'running': 160, 'eating': 160, 'driving': 160, 'biking': 160 } def lvlup_all(skill_name): current_lvl = skills[skill_name] current_exp = skill_exps[skill_name] next_goal = 150 * current_lvl # 当前等级升级所需EXP if current_exp >= next_goal: # 升级操作,直接修改字典中的全局状态 new_lvl = current_lvl + 1 skills[skill_name] = new_lvl # 计算升级后的下一级目标EXP next_next_goal = 150 * new_lvl # 优化输出:显示技能名、对应EXP变量名、整数目标值 print(f"{skill_name} 等级提升至: {new_lvl}") print(f"当前EXP: {current_exp} (对应全局变量: {skill_name}EXP)") print(f"下一级所需EXP: {next_next_goal}") elif current_exp < next_goal: print(f"{skill_name} 当前EXP不足,距离升级还差 {next_goal - current_exp} (对应全局变量: {skill_name}EXP)") else: print("未知错误") # 测试调用 lvlup_all('walking') print(f"walking 全局等级: {skills['walking']}") lvlup_all('running') print(f"running 全局等级: {skills['running']}")
代码说明
- 字典管理:用
skills和skill_exps字典替代零散的全局变量,更易维护,函数可直接修改字典内的数值,同步全局状态。 - 输出优化:明确显示对应EXP变量名称(如
walkingEXP),下一级目标EXP计算升级后的等级值,确保为整数。 - 全局状态同步:函数通过修改字典元素直接更新全局技能等级,解决原代码局部变量无法同步的问题。
测试输出
walking 等级提升至: 2 当前EXP: 160 (对应全局变量: walkingEXP) 下一级所需EXP: 300 walking 全局等级: 2 running 当前EXP不足,距离升级还差 -10 (对应全局变量: runningEXP) running 全局等级: 1
内容的提问来源于stack exchange,提问作者imsthupied
相关产品推荐
相关产品推荐

