【问题标题】:TypeError: unsupported operand type(s) for +: 'NoneType' and 'float' while looping and adding类型错误:+ 不支持的操作数类型:“NoneType”和“float”,同时循环和添加
【发布时间】:2021-08-08 03:17:25
【问题描述】:

在运行以下代码时,我收到 TypeError: unsupported operand type(s) for +: 'NoneType' and 'float' 根据我的要求,我有一个浮点数列表作为 API 中的字符串,我想将它们转换为浮点数并找到平均值

a= None
l=['2.35','4.25','9.9']
for num in l:
  a=a+float(num)
avg=a/len(l)

【问题讨论】:

  • 为什么a等于None而不是0?这就是导致你的问题的原因:a+float(num) 你不能做 None + something
  • 我发现错误信息非常明确。有没有不清楚的地方?
  • 替代解决方案:avg = sum(float(v) for v in l) / len(l) 或功能更强大的avg = sum(map(float, l)) / len(l)

标签: python python-3.x list python-2.7


【解决方案1】:

您应该将变量a 初始化为0 而不是None。这会给你:

a = 0
l=['2.35','4.25','9.9']
for num in l:
  a=a+float(num)
avg=a/len(l)

您遇到的错误告诉您无法将 None 对象与浮点数相加,这正是您在 for 循环的第一次迭代中尝试做的事情。

当您将变量 a 初始化为 0 时,您改为执行两个数值的相加,这被 Python 接受。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-22
    • 1970-01-01
    • 2019-08-22
    • 2017-06-06
    • 2014-03-28
    • 2018-06-20
    • 1970-01-01
    相关资源
    最近更新 更多