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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:15:35