如何将浮动附加到列表?

时间:2017-11-11 11:37:29

标签: python-3.x list

我想将float追加到列表中,但是我收到了这样的错误:

<ipython-input-47-08d9c3f8f180> in maxEs()
     12    Es = lists[0]*0.3862 + lists[1]*0.3091 + lists[2]*0.4884
     13    aaa = []
---> 14    Es.append(aaa)
     15 

 AttributeError: 'float' object has no attribute 'append'

我想我不能将浮动附加到列表中。我可以添加浮动列表以另一种方式列出吗?

这是我的代码:

import math

def maxEs():
    for a in range(1, 101):
        for b in range(1,101):
            for c in range(1,101):
                if a+b+c == 100 :
                  lists = []
                  lists.append(a*0.01)
                  lists.append(b*0.01)
                  lists.append(c*0.01)
                  Es = lists[0]*0.3862 + lists[1]*0.3091 + lists[2]*0.4884
                  aaa = []
                  Es.append(aaa)

2 个答案:

答案 0 :(得分:1)

我不知道你想要什么,但是你试图将一个列表附加到浮点数而不是相反。

应该是

aaa.append(Es)

答案 1 :(得分:0)

另一个答案已经解释了代码的主要问题,但还有更多:

  • 正如已经说过的那样,它必须是aaa.append(Es)(你为其他清单做得对)
  • 说到另一个清单:你根本不需要它;只需在公式
  • 中直接使用这些值
  • aaa在循环的每次迭代中被重新初始化和覆盖;你可能应该把它移到顶部
  • 您不需要内循环来查找c;了解ab后,您可以计算c以使其满足条件
  • 您还可以限制b的循环,因此结果不会超过100
  • 最后,您应该返回一些结果(max aaa可能吗?)

我们不知道代码究竟想要实现什么,但也许可以试试这个:

def maxEs():
    aaa = []
    for a in range(1, 98 + 1):
        for b in range(1, 99-a + 1):
            c = 100 - a - b
            Es = 0.01 * (a * 0.3862 + b * 0.3091 + c * 0.4884)
            aaa.append(Es)
    return max(aaa)