2017-11-11 6 views
-1

Ich möchte Schwimmer Liste anhängen, aber ich habe einen Fehler wie folgt aus:Wie füge ich eine Liste hinzu?

<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' 

Ich glaube, ich nicht Schwimmer Liste anhängen. Kann ich Floats hinzufügen, um einen anderen Weg aufzuzeigen?

Dies ist mein Code:

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) 
+0

Sie versuchen, füge die Liste 'aaa' zum Float' Es' hinzu, es sollte 'aaa.append (Es)' sein – Alperen

+0

Beachte auch, dass du sowohl 'lists' als auch 'aaa' in jeder Iteration des innersten re-initialisierst und überschreibst Schleife. –

+0

Oh mein Gott ... Ich denke, ich bin so dumm .... Es tut mir so leid .... –

Antwort

1

Ich weiß nicht, was Sie wollen, aber Sie versuchen, eine Liste mit einem Schwimmer nicht umgekehrt anzuhängen.

Sollte

aaa.append(Es) 
+0

Vielen Dank für Ihren Kommentar! Ich denke, ich bin so dumm .. –

0

Die andere Antwort bereits das Hauptproblem mit Ihrem Code erklärt, aber es ist mehr:

  • wie schon gesagt, es hat aaa.append(Es) zu sein (du hast es richtig für die andere Liste)
  • von der anderen Liste sprechen: Sie brauchen es überhaupt nicht; Verwenden Sie einfach die Werte direkt in der Formel
  • aaa wird neu initialisiert und in jeder Iteration der Schleife überschrieben; Sie sollten es wahrscheinlich nach oben verschieben
  • Sie brauchen nicht die innere Schleife zu finden c; sobald Sie a und b kennen, können Sie c berechnen, so dass sie die Bedingung
  • erfüllt, kann man auch die Schleife für b beschränken, so dass das Ergebnis nicht mehr als 100
  • schließlich sollten Sie wahrscheinlich einige Ergebnis zurück (die max ? von aaa vielleicht)

Wir wissen nicht, was genau der Code zu erreichen versucht, aber vielleicht versuchen, diese:

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) 
Verwandte Themen