Was ist der beste Weg, um erstellen Sie ein deck von Karten?
Dachte ich über ein deck von Karten für ein Kartenspiel. Ich könnte eine Liste machen mit allen Karten (ich weiß nicht wirklich über die Farben), aber ich Frage mich, ob es einen viel einfacheren Weg, dies zu tun.
cards = ['1','1','1','1'....]
Ich bin sicher, Sie könnten einen for
Schleife zu erstellen, die 4 Karten mit dem gleichen Wert, und fügen Sie es auf eine Liste, aber ich Frage mich, ob das die beste Lösung war. Ich bin nicht Fortgeschritten genug, um über wissen, oder erstellen Sie eine Class
was ich gesehen habe angeboten werden als andere Lösungen, aber ich bin offen für Erklärungen.
Habe ich bereits aus einem Wörterbuch definieren Sie die Karte Werte.
InformationsquelleAutor Mushy0364 | 2017-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schlage ich Ihnen eine Lösung mit einem Basis-Klasse-Nutzung.
First, let ' s machen ein
Card
Klasse:Dann, let ' s machen Sie eine Liste der Farben:
Endlich, lasst uns bauen Sie Ihr deck mit einer Liste Verständnis:
Den
Card
Klasse ist nur ein wrapper, der einfach zu manipulieren Karten anstelle von Tupeln, die natürlicher wirkt.In diesem aktuellen Zustand, es ist fast äquivalent zur Umbenennung der
tuple
geben... im Grunde ist es nur darin besteht, dass in einem Konstruktor__init__
, setzt die Attribute der Instanz.So, wenn ich rufe
Card(value, color)
in der Liste Verständnis, so zum BeispielCard(11, 'spades')
eine neue Instanz derCard
Klasse erstellt wird, die Ihrenvalue
- Attribut auf11
, und seinecolor
- Attribut auf'spades'
.Empfehle ich Ihnen die Lektüre einige Tutorials zu OOP für ein tiefgreifendes Verständnis der Konzepte.
Nun, Sie können versuchen und zu verbessern, diese Idee, zum Beispiel, indem Sie eine detaillierte
values
Liste anstelle derrange(1, 14)
:class
Teil? Ich fürchte, ich verstehe nicht, wie es funktioniert, obwohl ich denke, deine Antwort ist Super!!!Ich bearbeitet meine post 🙂 Auch glaube ich nicht gerne Werbung für meine eigenen Beiträge, aber hier ist eine stark verbundene Frage nach dem, was ich denke, OOP bringen kann: Python-OO, Programm-Struktur-Planung.
Vielen Dank für clearing alles an, ich will sicher sein, zu versuchen, diese out. Ich habe bereits ein dictionary mit Werten gespeichert, wie
values = {1:"Ace",etc.)
werde ich auf jeden Fall nehmen Sie Ihre Empfehlung zu Lesen, das OOP-tutorial. Danke für die Hilfe.InformationsquelleAutor Right leg
Zuerst einige Hilfsfunktionen:
Dann eine Karte der Klasse:
Dann ein Deck Klasse:
InformationsquelleAutor wasabi
Einem anderen Ansatz kann durchgeführt werden, indem
namedtuple
auscollections
- Modul, wie in diesem Beispiel:Und Sie können den Zugriff auf die Werte wie diese:
InformationsquelleAutor Chiheb Nexus
InformationsquelleAutor Sachin Konan
Können Sie stellen Sie Ihre deck, als eine Liste von Tupeln. Das ist eine leichtere alternative zu den Klassen. In dynamischen Sprachen wie python, Sie tun dies oft, um zu vermeiden, die boilerplate-code entstehen durch Definition eigener Klassen.
Möchten Sie vielleicht repräsentieren Sie die Karte Werte, die durch eine Ganzzahl, dies kann leicht erreicht werden durch die Veränderung der input-Liste.
InformationsquelleAutor Paul Rooney
Ich denke, du hast Recht, ein
for loop
würde den job zu erledigen, aber vielleicht nicht die eleganteste Lösung. Ich habe noch nie programmiert in Python, also ich weiß nicht die genaue syntax, aber ich könnte Ihnen eine Pseudo-code-überblick über eine Klasse, die würde, den job zu erledigen.InformationsquelleAutor fatalError
Könnte dies auch tun:
InformationsquelleAutor Gene Burinsky
Diese Lösung nutzt enum-Klasse (Paket enum34).
Zwei enum-Klassen stellen die Klage und die Anzahl mit einem benutzerdefinierten str Funktion. Die
Card
Klasse einen Anzug + eine ZahlInformationsquelleAutor greedy52