Skip to content

LivioNovak/SWP_Python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Homework and other task regarding the Python-part of SWP


Aufgabe 01: Lotto

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)] )


Aufgabe 02: Poker

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


Aufgabe 03: Firmenstruktur

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


Aufgabe 04: Schere-Stein-Papier (advanced)

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'

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages