You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python GUI开发:根据用户选择优化员工每日奖金绘制逻辑

优化Python GUI员工奖金绘图逻辑:从分支判断到动态索引

针对你开发GUI绘制员工每日奖金的需求,原有的if-elif分支判断扩展性差(新增员工就得修改分支代码),可以通过重构数据结构实现动态获取目标数据,以下是具体实现方案:

方案一:双列表索引匹配

将员工名字和对应奖金数据分别存入两个列表,通过名字列表的索引定位到目标奖金数据:

import matplotlib.pyplot as plt

# 定义员工名字列表与对应奖金数据列表
employee_names = ['Bob', 'Sammy', 'Tom']
employee_bonuses = [
    [100, 30, 50, 90],   # Bob的每日奖金
    [10, 60, 90, 200],   # Sammy的每日奖金
    [70, 90, 90, 90]     # Tom的每日奖金
]

# GUI用户输入的绘图目标
plotting_target = 'Tom'

# 动态获取目标并绘图
try:
    target_index = employee_names.index(plotting_target)
    plt.plot([0, 1, 2, 3], employee_bonuses[target_index])
    plt.show()  # 调用show()显示绘制的图像
except ValueError:
    # 处理员工名字不存在的异常情况
    print(f"未找到员工 {plotting_target} 的奖金数据")

方案二:字典映射(更直观高效)

用字典直接建立员工名字与奖金数据的映射关系,无需索引查找,代码更简洁:

import matplotlib.pyplot as plt

# 字典存储员工与奖金的对应关系
employee_bonus_map = {
    'Bob': [100, 30, 50, 90],
    'Sammy': [10, 60, 90, 200],
    'Tom': [70, 90, 90, 90]
}

plotting_target = 'Tom'

# 直接通过键获取数据绘图
if plotting_target in employee_bonus_map:
    plt.plot([0, 1, 2, 3], employee_bonus_map[plotting_target])
    plt.show()
else:
    print(f"未找到员工 {plotting_target} 的奖金数据")

原代码注意点

  • 原代码中if ploting_target=='Tom':末尾多了一个多余的反引号,需删除
  • 最后一行重复调用plt.plot([0,1,2,3], Tom)会导致Tom的数据被绘制两次,建议移除

内容的提问来源于stack exchange,提问作者Ayman M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:03:40