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
相关产品推荐
相关产品推荐

