Seite 1 von 1

Weniger ne Idee als mehr eine Frage

Verfasst: Dienstag 12. November 2013, 11:04
von Cheerok
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

Re: Weniger ne Idee als mehr eine Frage

Verfasst: Dienstag 12. November 2013, 12:01
von /me
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.

Re: Weniger ne Idee als mehr eine Frage

Verfasst: Dienstag 12. November 2013, 13:24
von Cheerok
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 ?

Re: Weniger ne Idee als mehr eine Frage

Verfasst: Dienstag 12. November 2013, 13:34
von EyDu
Cheerok hat geschrieben:Gibt es eine Art Tabelle oder ähnliches in der ich mir die Funktionen der Module ankucken kann ?
Python hat eine Dokumentation ;-)

Re: Weniger ne Idee als mehr eine Frage

Verfasst: Dienstag 12. November 2013, 13:36
von 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.

Re: Weniger ne Idee als mehr eine Frage

Verfasst: Dienstag 12. November 2013, 13:41
von Cheerok
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 ?

Re: Weniger ne Idee als mehr eine Frage

Verfasst: Dienstag 12. November 2013, 14:06
von 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.

Re: Weniger ne Idee als mehr eine Frage

Verfasst: Dienstag 12. November 2013, 14:30
von Cheerok
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 ^^