@carstenAC: ``return`` beendet die Abarbeitung der Funktion und gibt das Ergebnis an den Aufrufer zurück, welches nach dem ``return`` angegeben ist. Du gibst da also im ersten Schleifendurchlauf eine Liste mit zwei Elementen zurück. Das ist das vollständige Ergebnis der Funktion so wie Du sie geschrieben hast.
Jetzt ist also die Frage was Du *eigentlich* zurückgeben wolltest‽ Da kann man jetzt nur raten, darum sollte man so etwas bei Fragestellungen mit dazu schreiben. Also nicht nur das die Funktion nicht das liefert was sie soll, sondern auch wie das Wunschergebnis aussehen sollte.
Weitere Anmerkungen: Die erste Schleife ist sinnlos. Du steckst da *einen* Wert in eine Liste und iterierst dann über diese Liste von der genau bekannt ist, das sie nur einen Wert enthält. Das macht überhaupt keinen Sinn, weil die Schleife dann ganz genau *einmal* durchlaufen wird, also das was im Schleifenkörper gemacht wird, passiert genau *einmal*. Das kann man also einfacher ohne die Schleife ausdrücken. Schleifen sind dazu da Code wiederholt auszuführen. `wert` wird innerhalb der Schleife ja auch gar nicht verwendet — der Name ist ja auch an den selben Wert wie der Name `liste` gebunden.
`liste` ist kein guter Name falls es sich nicht um eine generische Funktion handelt bei der im Grunde egal ist was die Werte in der Liste bedeuten. Das ist hier offensichtlich nicht der Fall. Namen sollen dem Leser vermitteln was der Wert, der dahinter steckt, im Kontext des Programms bedeutet. Da der nicht weiter bekannt ist, habe ich jetzt zum Beispiel Schwierigkeiten zu raten was denn ein besserer Name währe und damit verstehe ich den Sinn der Funktion auch nicht.
An der Stelle würde ich auch überlegen ob man eine Liste übergeben will statt einfach der beiden Werte, für die es ja schon passende Namen gibt. Insbesondere wenn es Schwierigkeiten bereiten sollte einen passenden Namen für `liste` zu finden, hat man an der Stelle vielleicht etwas zu einer Datenstruktur zusammengefasst, was nicht unbedingt zusammen gehört.
Ein bisschen was zu Konventionen:
Einrücken immer mit vier Leerzeichen pro Ebene. Die Schleifenkörper sind ein Leerzeichen zu tief eingerückt.
Namen für alles ausser Klassen und Konstanten schreibt man klein und mit Unterstrichen. Also `get_position()` statt `getPosition()` und `anzahl` statt `Anzahl`.
Vor und nach binären Operatoren und dem ``=`` bei Zuweisungen, sowie nach Kommas erhöht ein Leerzeichen die Lesbarkeit. Syntaxhervorhebung hilft da ein bisschen, aber ohne sieht so etwas zusammengequetschtes schnell unübersichtlich aus.
Ich lande dann bei dieser Funktion:
Code: Alles auswählen
def get_position(anzahl, abstand, seitenabstand, randabstand):
for x in range(anzahl):
return [seitenabstand + (x * abstand), randabstand]
Die allerdings noch das gleiche Problem hat, aber da müsstest Du erst einmal beschrieben wie das tatsächliche Ergebnis denn nun aussehen soll. Ich habe aber schon den Verdacht, das der Funktionsname unpassend ist, weil da mehr als eine Position ermittelt wird.