【问题标题】:AttributeError: 'float' object has no attribute 'append' - Python Function "improve average"AttributeError: 'float' 对象没有属性 'append' - Python 函数“提高平均值”
【发布时间】:2021-03-11 08:16:14
【问题描述】:

大家好,这是我在这里的第一篇文章,如果这篇文章有问题,请告诉我。 如果该值低于列表的平均值,我正在尝试改进列表的某些值,而我试图做的是:

def improve(list,average):
    for i in range(len(list)):
        if list[i]<average:
            list[i].append(average) #This line gives me the error.

list=[10.50,11.40,20.50,9.30,5.00]
sum=0
average=float(0)
for i in list:
    sum=sum+i
    average=sum/len(list)
print(list)
improve(list,average)
print("improved list=",list)

我得到了错误“AttributeError: 'float' object has no attribute 'append'”,我确定代码是正确的,但是如果我不能附加浮动的东西,我能做什么还是应该做? 非常感谢大家,自从我开始攻读系统学位以来,我将一直活跃在这里,我会有很多问题或疑问。

【问题讨论】:

  • 错误发生在哪一行?另外,提高()功能是什么?似乎缺少信息。
  • 我想你想要list[i] = list[i] + average。您似乎将append 视为添加。不是。
  • list[i].append(average) 您的错误是您正在尝试将值附加到该位置存在的浮点值。如果您要插入该位置,您应该使用list.insert(index,average),或者如果您想追加到列表中,请执行此list.append(average),或者如果您想增加该位置的值,请​​使用list[i]+=average
  • 大家好,我已经编辑了帖子,因为第一行丢失了,我的错,我不知道我必须把第一行放在'''下面,我已经评论了这一行这给了我错误
  • 我想你可能不希望 average = sum / len(list) 在 for 循环中......

标签: python


【解决方案1】:

我认为您认为append() 会将这两个数字相加,这是错误的。 append() 将值推送到列表中,这就是您收到错误的原因:浮点数不是列表,因此它没有属性 append

我相信你需要的线路是:list[i] = list[i] + average

【讨论】:

  • 是的,谢谢!,我只需要做 list[i]=average lol
【解决方案2】:

这就是您可能正在寻找的...

def improve_list(ls, average):
    for i in range(len(ls)):
        if ls[i] < average:
            ls[i] = average
    return ls # Returns the improved list.

ls = [10.50, 11.40, 20.50, 9.30, 5.00]
total = 0.0
average = 0.0
for num in ls:
    total += num
average = total / len(ls)

print("Original list: {}".format(ls))
improved_list = improve_list(ls, average) # Stores the improved list in a variable.
print("Improved list: {}".format(improved_list))

【讨论】:

  • 是的,谢谢!,我注意到我必须使用“=”而不是 append
猜你喜欢
  • 2013-11-05
  • 2018-06-22
  • 2015-08-16
  • 2017-08-14
  • 2015-03-08
  • 2019-12-31
  • 1970-01-01
  • 2015-03-28
  • 2018-10-02
相关资源
最近更新 更多