Python字典员工工时累加更新失败,报int与str相加错误求助
解决员工工时累加的类型错误问题
问题根源
你遇到的int与str相加错误和员工ID类型无关,核心问题是工时值的类型不统一:
- 要么字典
hours_logged中已存储的员工工时是字符串类型(比如初始录入时未转成数字) - 要么输入的
todays_hours仍保留字符串格式,未转换为整数/浮点数
修复方案
1. 统一当日工时的输入类型
获取todays_hours时,立即将输入转为数字类型(整数或浮点数,按需选择):
# 整数工时 todays_hours = int(input("输入当日工时:")) # 支持小数的工时 # todays_hours = float(input("输入当日工时:"))
2. 处理新老员工的工时更新逻辑
针对新员工(字典中无该ID)直接存入数字工时;老员工则确保取出的值为数字后再累加:
employee_ID = int(input("输入员工ID:")) todays_hours = int(input("输入当日工时:")) if employee_ID not in hours_logged: hours_logged[employee_ID] = todays_hours else: # 强制转换已有值为数字,避免初始值是字符串的情况 hours_logged[employee_ID] = int(hours_logged[employee_ID]) + todays_hours
3. 外部数据读取时的类型校验
如果字典是从外部文件(如文本、CSV)读取初始化的,务必将工时值转为数字:
# 示例:从文本文件读取工时记录 with open("hours_record.txt", "r") as f: for line in f: emp_id, hrs = line.strip().split(",") hours_logged[int(emp_id)] = int(hrs) # 统一转为整数类型
快速排查方法
可以在累加前打印值的类型,确认哪一方是字符串:
print(type(hours_logged[employee_ID])) print(type(todays_hours))
内容的提问来源于stack exchange,提问作者Tyler Zastrow
相关产品推荐
相关产品推荐

