In Funktion Variable schreiben auf die die Funktion angewendet wird.

Code-Stücke können hier veröffentlicht werden.
Antworten
Tombery
User
Beiträge: 29
Registriert: Mittwoch 10. Juli 2019, 19:56

Donnerstag 18. Juli 2019, 08:45

Guten Morgen.
Ich hab nun schon einiges gegoogelt aber leider fehlt mir wohl das Fachvokabular um anständig danach suchen zu können.

Ich will in einer Funktion den Namen einer Liste aufrufen und zwar genau den Namen der Liste auf den die Funktion angewendet wird.
Hier ein Beispiel, damit ihr wisst was ich meine.


Die Funktion wird im Hauptprogramm auf zum Beispiel auf P1 angewendet.
Im Hauptprogramm steht also: neuausspielen(P1, Ab, Lspieler)

Code: Alles auswählen

def neuausspielen(Hand, Ab, Lspieler):
    Ab.insert(0, max(Hand))
    Hand.remove(max(Hand))
    Lspieler.insert(0, [u]Hand)[/u]
    return
Die Zeile Lspieler.insert macht nun die Probleme. Hier ist das Hand sicher falsch.
Er soll nicht Hand oder wie die Hand definiert ist hineinschreiben sondern 'P1'.
Also den Namen der Liste auf den die Funktion angewendet wird.

In Lspieler sollte also 'P1' hinzugefügt werden.

Ich hoffe ihr versteht was ich meine.
Sirius3
User
Beiträge: 11979
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 18. Juli 2019, 09:15

Das geht nicht, was soll da auch passieren, wenn man gar keine Variable angibt, sondern direkt einen Wert (bei Dir z.b. die 0 in insert)?

Das einfachst ist, Du übergibst den Namen des Spielers zusätzlich als Argument (name).

Code: Alles auswählen

 neuausspielen("P1", P1, Ab, Lspieler)
Übrigens, Du solltest dringend sprechende Variablennamen verwenden, keine Abkürzungen, keine kryptischen Nummern. Du tust die damit keinen Gefallen, weil nächste Woche mußt Du rätseln, was `Ab` den bedeutet.
Nach Konvention werden Variablennamen klein_mit_unterstrich geschrieben.
Tombery
User
Beiträge: 29
Registriert: Mittwoch 10. Juli 2019, 19:56

Donnerstag 18. Juli 2019, 10:53

Ich werde meine Variablen umbenennen.


Finde ich schade, dass das nicht möglich ist aber der von dir vorgeschlagene Weg funktioniert auch.
Dankeschön!
Benutzeravatar
/me
User
Beiträge: 3361
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Freitag 30. August 2019, 16:47

Tombery hat geschrieben:
Donnerstag 18. Juli 2019, 10:53
Finde ich schade, dass das nicht möglich ist aber der von dir vorgeschlagene Weg funktioniert auch.
Wenn erfahrene Entwickler ernsthaft Bedarf an so etwas sehen würden, dann hätte man in Python so eine Möglichkeit eingebaut.

Grundsätzlich sieht es für mich im Moment eher so aus, als ob dein Ansatz falsch wäre. Warum glaubst du den Variablennamen zu brauchen, den der aufrufende Code für den Parameter verwendet hat?
Antworten