Wie wähle ich den nächsten Wert aus einer Liste aus?

3 Antworten

Iteriere über beide Listen, erzeuge allle Kombinationen, gebe sie aus.

Einfacher hättest du es natürlich allgemein, wenn Du Dir gleiche eien Liste mit allen Karten generierst.

Und Du mußt natürlich sschon den Willen haben die Dokumentation zu lesen, aber für den Anfang:

for item in list:
    ....

So iterierst Du über eine Liste.

Dafür benötigst Du for-Schleifen. Die sind in Python anders als in anderen Programmiersprachen auch für Anfänger sehr intuitiv und einfach verständlich.

Beispiel:

liste = [1, 2, 3, 4, 5, 6, 7, 8]

for number in liste:
    print(number)

Die Ausgabe:

1
2
3
4
5
6
7
8

Die for-Schleife bedeutet also in etwa: Für jedes Element number (so nennen wir es, wir hätten auch jeden anderen Namen wählen können) in der Liste namens liste (die Liste, die wir oben definiert haben), mache Folgendes: number ausgeben.

Für Dein Problem brauchst Du zwei verschachtelte for-Schleifen, denn: Du willst für jede Farbe (Herz, Pik, Kreuz, Karo) jeden Wert (2, 3, 4, ..., König, Ass) ausgeben. Das heißt, Du lässt die for-Schleife über die Liste der Farben laufen und immer, wenn gerade eine Farbe "an der Reihe ist", lässt Du eine weitere for-Schleife über die Liste der Werte laufen und gibst Wert und Farbe aus.

Das funktioniert so:

farben = ["Herz", "Pik", "Kreuz", "Karo"]
werte = ["2", "3", ..., "König", "Ass"]

for farbe in farbe:
    for wert in werte:
        print(farbe + " " + wert)

Die Ausgabe:

Herz 2
Herz 3
Herz 4
...
Karo König
Karo Ass

In Python ist alles, was die Sprache kann, in einer Dokumentation bzw. einem Tutorial zusammengefasst. Du findest es unter https://docs.python.org/3/tutorial/

for-Schleifen sind zum Beispiel hier beschrieben: https://docs.python.org/3/tutorial/controlflow.html#for-statements

Python’s for statement iterates over the items of any sequence (a list or a string), in the order that they appear in the sequence.

Die for-Schleife iteriert also über jeden Wert von beispielsweise einer Liste, von vorne nach hinten. Verschachtelt kann man for-Schleifen zum Beispiel nutzen, um mögliche Kombinationen von Listenelementen auszugeben.

LG

PS: Für Karten in einem Kartenspiel würden sich in Python Tupel sehr anbieten. Das sind einfach gesagt "Variablen", die zwei Werte speichern können, in diesem Fall wären das der Wert und die Karte. Tupel kann man in normalen Variablen speichern und werden als (a, b) bzw. hier etwa ("2", "Herz") geschrieben. Zugreifen kannst Du auf die verschiedenen Elemente wie in einer Liste, beispielsweise so:

>>> tupel = ("Herz", "2")
>>> tupel[0]
...
"Herz"

Diese Tupel müsstest Du natürlich auch erst definieren, für die Entwicklung des gesamten Kartenspiels erweisen sie sich aber mit Sicherheit als sinnvoll.

farben = ["Herz", "Pik", "Kreuz", "Karo"]
werte = ["2", "3", ..., "König", "Ass"]
karten = [] #noch leere Liste

for farbe in farben:
    for wert in werte:
        karten.append( (farbe, wert) )

Der Inhalt von karten wäre dann:

[("Herz", "2"), ("Herz", "3"), ..., ("Karo", "König"), ("Karo", "Ass")]

Das wirkt zunächst ein bisschen chaotisch, ist aber sinnvoll, weil die Farbe und der Wert einer Karte dann in einem "Paket" als ganze Karte zusammengefasst ist.

Hoppelhase96 
Fragesteller
 21.01.2019, 12:46

Inzwischen habe ich es anders gemacht, als in meiner Frage. Ist sicher auch nicht perfekt, aber es funktioniert :D Danke für deine ausführliche Antwort!

Vielleicht kannst du mir noch bei was anderem helfen: Ich würde die Karten gerne nach Wert aufsteigend sortiert ausgeben lassen. Die Farben spielen dabei keine Rolle. Kann ich das irgendwie definieren, dass z.B. "Dame" einen höheren Wert hat als "Bube" usw?

0
  1. das ist kein Problem sondern eine Aufgabe
  2. https://www.programiz.com/python-programming/list
  3. schau dich bei 2 mal um

alles geht, ich empfehle eine andere Programmiersprache(ich kann dir ja mal privat helfen)
4. denk' über einen Algorithmus nach

Hoppelhase96 
Fragesteller
 19.01.2019, 19:24

Wow, das war mal eine schnelle Antwort xD Danke dir ^^

Die Seite ist echt gut!

Ich MUSS leider mit Python arbeiten :/

0