Weniger ne Idee als mehr eine Frage

Du hast eine Idee für ein Projekt?
Antworten
Cheerok
User
Beiträge: 4
Registriert: Dienstag 12. November 2013, 09:08

Moin bin neu hier im Forum und grad im Beginn mit Python.

Weiss auch nicht, ob das hier der richtige Foren-Bereich ist aber einfach mal ne Frage in die Runde.

Für eine Klausur in der Berufsschule, habe ich in PHP eine Programm schreiben müssen, das Fussball-Mannschaften
in einer DB hat. Diese werden nach einer Abfrage "Wie viele Mannschaften sollen getippt werden"
per Zufall gewählt und in Matches zusammengefügt.
Quasi
"Wie viele Mannschaften" 3
Aus der DB werden ausgelesen Bayern, BVB, KSC und dann gepaart
BVB : KSC
Bayern : BVB
KSC : Bayern
oder ähnlich.
Dann kann getippt werden
0 : 1 , 3:2 , 3:4 etc.
Das Programm hat vorher die wirklichen Ergebnisse schon randomisiert erzeugt und gleicht
diese nun mit den Tipps ab. Ist 1 Teil des Tipps richtig gibt es 1 Punkt sind beide richtig 2 Ounkte
ist keins richtig 0 Punkte.

Dieses Punkteergebnis wird ausgegeben und zusammengerechnet.

So meine Frage wäre jetzt (das ganze ist in PHP schon geschrieben worden und ich komm nicht mehr ran
da Klassenarbeit aber funktioniert hat es :3)

Wie würdet ihr diese Problemstellung in Python angehen ?
Würdet ihr eher mit Modulen arbeiten oder diese Abgleiche selbst schreiben,
wenn ja wie würde das ganze aussehen. Wäre nett wenn da jemand "schnell"
was schreiben könnte mit bissl Kommentar damit ich es nachvollziehen kann
wie ich in Python am besten denke und wie man so Probleme am einfachsten löst
(in der PHP Version habe ich mehrere Tabellen zur Zwischenspeicherung der Ergebnisse
und Variablen genutzt, was man in Python ja anscheinend durch die "Mini-DB" im Arbeitsspeicher
zumindest teilweise umgehen könnte wenn ich es richtig verstanden habe).

Wichtig ! Ich will hier keine Musterlösung sondern nen Denkanstoß !
Welche Module empfehlt ihr wie würde ihr grob das Programm aufbauen,
also quasi

___________
[Optik]

[Aktionen beim Drücken von Buttons]

[Datenbankroutine] usw. mit n bissl Codeschnipsel-Beispiel
__________________________
Hoffe man versteht was ich meine :D

Danke schon Mal im voraus,

der Cheerok
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Das passende Werkzeug zum Erzeugen der Spielpaarungen findet sich in itertools. Das Auswählen einer zufälligen Menge aus einer vorgegebenen Menge kann man mit random.sample erledigen.

Das führt uns dann beim Start zu Folgendem:

Code: Alles auswählen

import itertools
import random

teams = ['BVB', 'Bayern', 'Leverkusen', 'Schalke']

number_of_teams = 3
for team1, team2 in itertools.permutations(random.sample(teams, number_of_teams), 2):
    print('{} : {}'.format(team1, team2))
Wenn du keine Rückspiele haben willst, dann ist combinations statt permutations das Mittel der Wahl.

Jetzt kannst du die Kombinationen mit den Ergebnissen zusammen in einer geeigneten Datenstruktur in eine Liste stecken und weiterverarbeiten.
Cheerok
User
Beiträge: 4
Registriert: Dienstag 12. November 2013, 09:08

Danke, sehr cool, das hilft mir schon weiter. Gibt es eine Art Tabelle oder ähnliches in der ich mir die Funktionen der Module ankucken kann ?
Oder ist das eher ein "Click and Dig Deeper"-lern Geschichte ?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Cheerok hat geschrieben:Gibt es eine Art Tabelle oder ähnliches in der ich mir die Funktionen der Module ankucken kann ?
Python hat eine Dokumentation ;-)
Das Leben ist wie ein Tennisball.
BlackJack

Und in der Dokumentation gibt es einen Index über alle Module und Funktionen (und Methoden). Das könnte man als Tabelle auffassen. Ist aber eher weniger geeignet um die Standardbibliothek kennen zu lernen. Eher wenn man ein Skript mit einer Funktion oder Methode hat und über den Namen die passende Stelle in der Dokumentation finden möchte.
Cheerok
User
Beiträge: 4
Registriert: Dienstag 12. November 2013, 09:08

Na dann :D Danke für die Tips ^^
Wenn euch noch was einfallen sollte was mir bei dem Projekt helfen kann gerne her damit ^^

Achja, wenn man das ganze in eine Gui fassen will, würde ihr dann zu QT samt Designer raten ?
BlackJack

@Cheerok: Bei GUI würde ich dazu raten unabhängig von dem Problem erst einmal objektorientierte Programmierung (OOP) zu lernen, falls das Thema noch nicht bekannt ist und sitzt. Bei GUIs kommt man um eigene Klassen in der Regel nicht herum.

Bei einem ordentlichen Programm ist die Geschäftslogik sauber von der Kommunikation mit dem Benutzer getrennt, so dass Du die Geschäftslogik auch ohne GUI schon umsetzen und testen kannst.
Cheerok
User
Beiträge: 4
Registriert: Dienstag 12. November 2013, 09:08

Das ist mir schon klar hab ja auch bissl Hintergrund in PHP und Java nur gefällt mir Python besser. Find das eleganter und intuitiver.
Aber gut du hast auf jeden Fall recht, eigene Klassen sind immer besser.

Danke ^^
Antworten