Frage zu Dictionary Liste und Tupel

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Medds
User
Beiträge: 27
Registriert: Samstag 17. Oktober 2020, 19:19

Hallo.
Ich habe ein Skat Kartendeck erstellt als Tupel und das 8mal in eine Liste multipliziert (für Blackjack).

Habe jetzt 2 Aufgaben die ich trotz leider fehlgeschlagener Recherche nicht lösen kann. Hoffe es gibt dafür eine einfache und kurze Lösung dafür.

Code: Alles auswählen

class Karten:    
    def __init__(self):
        pass
    
    def karten_erstellen(self):
        ZAHLENWERTE = {'7': 7, '8': 8, '9': 9, '10': 10, 'Bube': 10, 'Dame': 10, 'König': 10, 'Ass': 1}
        FARBEN = ['Herz', 'Karo', 'Pik', 'Kreuz']
        kartendeck = []
        for farbe in FARBEN:
            for wert, zahl in ZAHLENWERTE.items():
                karte = (f"{farbe} {wert}", zahl)
                kartendeck.append(karte)
        return kartendeck
    
    
    

karten = Karten()
karten1 = karten.karten_erstellen()
karten1 = karten1 * 8
print(karten1)
Ich möchte jetzt:
1. Eine beliebige beispielsweise 'Kreuz Ass' aus der Liste entfernen. Aber nicht gleich alle 8 sondern nur eine
2. Hängt mit Frage eins zusammen und wird dadurch wahrscheinlich auch gelöst:
Ich möchte eine z.b. eine Kreuz Ass rauspicken und die gegebenenfalls in eine 11 umwandeln wenn es der Kontext verlangt.
Glaube aber wenn mir Frage 1 beantwortet wird, dass ich das zweite selbst hinbekomme

Falls mir da jemand helfen kann bedanke ich mich vielmals im Voraus.

P.s.: noch eine kurze Anmerkung: Eine Index Lösung wäre nicht so optimal, weil ich die liste mit shuffel mischen möchte

Nochmals vielen Dank im Voraus
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Konstanten gehören an den Anfang der Datei, nicht in eine Funktion. Die Klasse ist nun noch mehr sinnlos, als bei dem Beispiel in Deinem anderen Thread.
Warum hat karten1 eine 1?

Frage 1 solltest Du mit Hilfe irgendeines Tutorial zu Listen lösen können. Für Frage zwei mußt Du halt ein Ass suchen und entsprechend durch ein neues Tuple mit anderem Wert ersetzen.
Medds
User
Beiträge: 27
Registriert: Samstag 17. Oktober 2020, 19:19

Ist wohl wahr das karten1 nicht gut überlegt oder korrekt geschrieben ist. Sollte vielleicht spielkarten_von_spiel_eins z.b. heißen. Sollte ich mir in Zukunft besser überlegen wenn ich es in diesem Forum poste.
Die Klasse soll auch nicht so kurz bleiben. Ich möchte da noch das mischen und das Karten aus Deck entfernen und falls mir im laufe der zeit noch was einfällt vielleicht nochwas reinschreiben.
Zur Anmerkung Tutorial:
Das ist mit Sicherheit richtig.
Ich bin jetzt seit ca. 4 Monaten dran Python zu lernen. (Und ich ja ich weiß ich bin dafür noch nicht weit aber aller Anfang ist schwer)
Ich Versuche das lernen mit:
- Einem Kurs von Udemy
- Youtube Videos von Morpheus
- Python Tutorial - Udemy Kurs Handbuch
- Einträge aus dem "Das deutsche Python-Forum"
Nur leider gibt es in dem Fall was ich jetzt versuche unklarheiten die ich wahrscheinlich mangels meiner Intelligenz mit diesen mitteln nicht herausfinde.

Ich hätte meine Frage eigentlich ganz einfach Formulieren können und sollen und hätte damit wahrscheinlich auch eine Antwort bekommen ohne anzuecken.
Ich entschuldige mich hiermit in aller Form dafür!!

Ich versuche es erneut in der Hoffnung mir würde verziehen

Ich habe eine Liste aus mehreren Tupel
Wie kann ich ein Tupel anhand des Keys ( Hoffe Formulierung Key ist richtig; Ich meine z.b. die Herz 7 in ('Herz 7", 7) ) aus einer Liste löschen ohne das ich alle Herz 7 (die in meinem Beispiel anfangs 8 mal vorkommt) auf einmal lösche?

Und nochmals vielmals ENTSCHULDIGUNG für meine Anfängerfrage
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Du brauchst Dich nicht entschuldigen. Ich meinte nur, das ist so simple, dass es eigentlich in jedem Tutorial vorkommen sollte:

Code: Alles auswählen

karte = ("Pik 10", 10)
karten.remove(karte)
Die 1 sollte weder als Zahl noch als Wort im Variablennamen vorkommen. Denn ob es das erste Spiel oder das 29ste ist meist doch völlig egal. Und auch wenn nicht, dann ist die richtige Datenstruktur eine Liste für die Spiele.
Medds
User
Beiträge: 27
Registriert: Samstag 17. Oktober 2020, 19:19

Sorry das ich jetzt nochmal nerve.
Gibt es keine Möglichkeit das ganze Tupel zu löschen ohne das ganze Tupel anzugeben?
Ich habe ja vor später im Kontext das Ass von einer 1 zu einer 11 und umgekehrt zu verändern.
Deshalb hatte ich die Hoffnung das Tupel nur anhand des Key´s zu löschen. Also ohne den Wert mit anzugeben.
Aber wahrscheinlich geht das hald einfach nicht
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Natürlich geht das, das mußt Du dann aber explizit programmieren. Dazu braucht man Schleifen, Vergleiche und da Du dann ja den Index kennst, `del`. Das ist alles nicht sonderlich schwierig, die Grundlagen dazu hast Du ja alle schon.
Benutzeravatar
__blackjack__
User
Beiträge: 13103
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wobei ich in Frage stellen würde da irgendwelche Kartenobjekte zu löschen oder auszutauschen. Wenn die Karten keinen festen Wert haben, sondern der von irgendwelchen Bedingungen abhängt, dann sollte man die Karten halt nicht mit einem festen Wert speichern. Das sieht nach einer Funktion aus der man Karten übergibt, und die dann diese Karten bewertet.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten