ich habe aufgrund meine Masterthesis erstmalig mit Python zu tun, zuvor maximal mit C++/C#, aber das war auch eher rudimentär. Daher bin ich schnell an meinen Grenzen, wenn es um die Erstellung neuen Codes geht.
Nun habe ich schon ein anschauliches Stück fertig und theoretisch läuft auch immer mal alles.
Aber dann auch wieder nicht. Ich möchte für viele Paneele (Strömungslehre, Potentialtheorie) fünf bestimmte Werte ermitteln und diese in einer csv-Datei ausgeben lassen. Das war auch nicht so kompliziert. Diese Werte werden in einer Subliste (newpanel) gespeichert, die in einer Hauptliste (plotlist) ist. Ist im Code verständlicher. Für jedes nächste Paneel wird der Hauptliste mittels for-Schleife eine neue Subliste mit weiteren Berechnungswegen hinzugefügt.
An dieser Stelle die erste Frage, ist eine Hauptliste überhaupt nötig? Die konnte meine Werte bereits erfolgreich in ein Excel sehen, wenn ich sie direkt aus der for-Schleife für jedes Paneel plotten lassen. Der Grund warum ich davon wieder weg bin ist, dass die Datei riesig und unübersichtlich ist.
Daher habe ich die Liste dann erstmal nach Drücken sortiert.
Und möchte dann für jedes Element der Hauptliste den Prozentwert iterativ überprüfen, um mir nur bestimmte Werte plotten zu lassen und dann ja auch schon in der aufsteigenden Reihenfolge.
Aber dann steckt der Wurm drin. Ich komme mit der Übergabe der Listenelemente nicht zurecht. Weil mein Listenindex für die Iteration auch eine Liste ist.
Ich habe das Gefühl, das ist ein ganz banales Problem, aber ich sehe einfach nicht wie ich es löse. Jeder Tipp wäre super.
Über Namensgebung oder nicht besonders pythonische Anwendungen bitte nicht zu sehr auslassen, dass noch Verbesserungspotential besteht dürfte klar sein.
Code: Alles auswählen
for panel in self.BladePanels:
newpanel = []
self.plotlist.append(newpanel) #neue Subliste in die Hauptliste einfügen
p_panx = panel.Pressure #für alle Paneele den jeweiligen Druck ermitteln
newpanel.append(p_panx) # den Druck an Position 0 der Sublise einfügen
A_panx = panel.Area #für alle Paneele den jeweiligen Flächeninhalt ermitteln
newpanel.append(A_panx) # den Flächeninhalt an Position 1 der Sublise einfügen
sigmax = (-p_panx)/(0.5*self.Density*(aRotationRate**2)*(self.RotorInfo.Diameter**2))
newpanel.append(sigmax) # Sigma des Paneels an Position 2 der Sublise einfügen
A_sum += A_panx
newpanel.append(A_sum) # die Summe der bisherigen Flächeninhalte an Position 3 der Sublise einfügen
prozent = self.A_Blade/100 * A_sum
newpanel.append(prozent) # den Prozentanteil der Paneelfläche an Position 4 der Sublise einfügen
self.plotlist.sort() # Die Tabelle nach der größe des Druck aufsteigend sortieren, bis hier alles prima!
for elem in self.plotlist:
element = self.plotlist[elem] # hier steckt der Fehler
prozent = int(element[4])
i = 0
for i in min(prozent-i*0.03):
Cav_Result = dict(Prozentanteil = prozent,
Paneeldruck = element[0],
Paneelflaechen = element[1],
SigmaX = element[3]
)
# Write the result to file
CavitationTable.writerow(Cav_Result)
CavitationTable_File.flush()