Homework and other task regarding the Python-part of SWP
Aufgabenstellung:
Programmiere Lottoziehung als Methode
- random.getrand()
- Algorithmus zum Zufallszahlenziehen muss so programmiert sein, dass keine Zufallszahl zweimal gezogen werden kann (d.h. wenn Sie alle 45 Zahlen ziehen mussten, würden Sie den ̈Zufallszahlengenerator nur 45 mal benutzen dürfen)
- Ziehe die sechs Zahlen und gib Sie am Bildschirm aus
Erweiterung:
Programmiere Lottoziehung Statistik als Methode
- Mach 1000 Ziehungen
- Erstelle Dictionary fur Statistik, wie oft welche Zahl gezogen wurde
- Ruf die Statistikmethode nach jede Ziehung auf und inkrementiere den Zähler
Anmerkungen:
- Zufallszahl wurde mit random.randint() gelöst:
- Methode, die ganzzahlen mit immer der selben Wahrscheinlichkeit generiert.
- Parameter: (kleinste Zahl, größte Zahl - ausgeschlossen)
Erweiterung 1.1:
- Globale Variablen wurden entfernt. Stattdessen werden die benötigte Listen, Dictionaries, etc. als parameter mitgegeben bzw. returned
- jegliche Fixzahl i Code (außer 0 & 1) wurde durch einen Parameter abgelöst für mehr dynamik
- Parameter: ( [Untergrenze(inklusiv)] , [Obergrenze(exklusiv)] )
Aufgabenstellung:
Pokerspielsimulator als Aufgabe über mehrere Wochen:
- überlege wie man die Pokerkarten modellieren könnte (vier Farben, 13 Symbole)
- gib zufällig fünf Karten
- recherchiere welche Kombinationen beim Pokerspiel exisiteren
- schreibe Funktionen fur die Kombinationen Paar, Drillinge, Poker, Flash, Strasse usw.
- spiele 100000 mal und zähle die Anzahl der verschiedenen Kombinationen
- berechne den prozentuellen Anteil einer Kombination zu der Gesamtspieleanzahl
- recherchiere die richtige Anteile im Netz und vergleiche die Ergebnisse
Anmerkungen:
- Jede gezogene Karte wird als Objekt gespeichert, die 1 Zahl für den Wert & 1 für die Farbe speichert
- Konstanten werden in einer eigenen Datei angelegt (constants.py)
Erweiterung 1.1:
- Funktionen für Kombinationen wurden in ein eigenes File combinations.py ausgelagert
- unittests wurden in *tests/unittests.py" eingefügt. Überprüft werden folgende fünf Funktionen:
- get_value()
- royal_flush()
- straight_flush()
- four_of_a_kind()
- full_house()
Erweiterung 2.0:
- Timer-Decorator hinzugefügt (in decorator.py)
- auf def main und def init_cards angewandt
Aufgabensstellung:
- Bitte UML-Klassendiagramm zeichnen
programmiere in Python:
- eine Firma
- Es gibt Personen, Mitarbeiter, Abteilungsleiter
- Es gibt mehrere Abteilungen, jede(r) Mitarbeiter ist in einer Abteilung
- Es gibt beide Geschlechter
- es gibt nur einen Abteilungsleiter pro Abteilung
- Mitarbeiter gehören immer zu einer Abteilung
- ein Abteilungsleiter ist auch ein Mitarbeiter
Umsetzung:
- modelliere die Objekte über Vererbung
- erzeuge zum Schluss ein Firmenobjekt
programmiere folgende Methoden:
- man muss alle Objekte instanzieren können
- wieviele Mitarbeiter, Abteilungsleiter gibts in der Firma
- wieviel Abteilungen gibt es
- welche Abteilung hat die größte Mitarbeiterstärke
- wie ist der Prozentanteil Frauen Männer
Maximiere die Logik-Kapselung...Methoden und Datenstrukturen sollten in den passenden Klassen implementiert werden.
Anmerkungen:
- Umsetzung so gut wie fertig, aber nicht getestet
Referenzmaterial:
https://bigbangtheory.fandom.com/de/wiki/Stein,_Papier,_Schere,_Echse,_Spock
http://www.samkass.com/theories/RPSSL.html
Aufgabenstellung:
- Als Terminal-Spiel umsetzen
- Spielmodi COMP vs PLAYER
- zähle wer wie oft gewonnen
- zähle alle gewählte Symbole
- überlege wie die Daten dauerhaft gespeichert werden könnten
- biete ein Menü an Spielen, Statistik
Anmerkungen:
- Es gibt zwei Spielmodi, Player vs Player & Player vs COM
- Das Statistikmenü bietet recht viel Platz für Verbesserungen
Erweiterung 2.0:
- gesammelte Daten der von den Spielern gewählte Symbolanzahl zu einem Webserver übertragen und in eine SQLite DB speichern
- alten Code in den Order 'old game' verschoben
- flask server und sqlite-db in order 'server' erstellt
- anpassungen an 'cli.py' und 'statistics.py' vorgenommen
- Konfiguration in 'config.ini' im order 'data'