Seite 1 von 2

Lotto

Verfasst: Dienstag 12. April 2005, 16:27
von python Dummie
Hi ich habe folgendes problem.
Es ist ne Aufgabe die ich von meinem Lehrer bekommen habe um meine Note zu verbessern. Ich will ja auch nicht, dass ihr mein prog schreibt, sondern mir helft.

Meine Aufgabe is es:
das spiel Lotto zu programieren. Ich soll Eine Datei erstellen in der ich 4 klassen habe, eine Namens Urne, dort sind alle kugeln von 0-49 enthalten., dann eine Klasse namens lotto die von der urne erbt in der ich dann zufällig sechs zahlen ziehe., eine Klasse spiel77 die auch aus der Urne erbt in der ich zufällig 7 zahlen von 0-9 ziehe(diese Zahlen dürfen auch doppelt vorkommen.) gezogen werden, und eine Klasse super 6 die von der Klasse spiel77 erbt und wobei die letzten sechs zahlen vom spiel 77 = meine zahl für super 6 ist.

Dann brauche ich noch eine datei, in der ich meine Klassen importieren kann und worin dann das HAuptprogram steht.
Die datei soll den user abfragen ob er Lotte, Spiel77 & super 6 spielen möchte oder nur bestimmte. wenn er die spiele ausgewählt hat darf er noch entscheiden wie viele Lottofelder er spielen möchte und ob eer selber tippen möchte oder dies automatisch geschehen soll.

wenn er selber eingeben möchte soll er nun für die anzahl der felder die er spielen möchte die zahlen eingeben.
Beim automatischen tippen werden ihn die von "Ihn" getippten zahlen angezeigt. nun soll verglichen werden, wie viel richtige er denn hat und ob er vielleicht spiel 77 oder super 6 gewonnen hat.
dafür werden die von ihm getippten zahlen und die zufällig gezogenen zahlen aus den Klassen angezeigt.

Nun soll der spieler entscheiden können, ob er nochma spielen möchte.


Es muss leider so umständlich und umfangreich sein auch leider mit Klassen und dann das Klassen importiern und so die aufgabe wurde leider so gestellt.

Problem ich darf nicht mit print arbeiten. sondern mit console und dann muss die ausgabe mit get..... und set..... sein..

Ich wäre dankbar wenn ihr mir tipps geben könntet. ich fang heute an und poste morgen mal das was ich fertig habe vielleicht hilft mir ja jemand wäre echt nett. Weils für mich sehr wichtig ist um meine Note zu retten.

Verfasst: Dienstag 12. April 2005, 20:38
von fs111
Was ist deine Frage?

fs111

Re: Lotto

Verfasst: Mittwoch 13. April 2005, 13:24
von Leonidas
python Dummie hat geschrieben:Dann brauche ich noch eine datei, in der ich meine Klassen importieren kann und worin dann das HAuptprogram steht.
Das ist ja Java-like und eher unpythonic... aber nagut.

Und nein, es ist kein Problem deswegen zu posten. Wenn du uns eine Frage stellst, werden wir gerne versuchen dir zu helfen.

Verfasst: Mittwoch 13. April 2005, 21:50
von BlackJack
Wenn diese Klassenhierarchie von Deinem Lehrer vorgegeben wurde, dann sag ihm doch bitte, dass er Vererbung nicht verstanden hat, eine 6 bekommt und sich wieder setzen darf. :wink:

Vererbung ist eine "ist-ein(e)" Beziehung zwischen zwei Klassen. Von Deiner Beschreibung her gilt aber "Lotto ist eine Urne" nicht, sondern eher "Lotto benutzt eine Urne".

Verfasst: Donnerstag 14. April 2005, 12:25
von Leonidas
Wie wärs mit LottoAutomat von der dann Spiel77Automat, Super6Automat usw erben...

Verfasst: Freitag 15. April 2005, 21:26
von python Dummie
ich hab bei meiner klassen hirarchie irgend wie was nicht so ganz richtig. ich würd das quelltext gerne hochladen, aber der schul server is down und ich wollt mir den quelltext eben gerade über nen ftp prog von der schule nach hause ziehen. ich hoffe das der morgen wieder on ist.

Verfasst: Samstag 16. April 2005, 13:25
von python Dummie
so hier mal mein quelltext bisher.
is aber noch nichts wirklich richtig.
kann mir jemand sagen wie ich die def anweisungen machen muss.


Code: Alles auswählen

# _*_ coding: cp1252 _*_
# Lotto
# Sebastian Hoopmann DQI04

# Import

import console, random


#


class Urne:
    def __init__(self, start=1, ende=1):
        self.__kugeln = []
        for i in range (start, ende+1):
            self.__kugeln.append(i)

        random.shuffle (kugeln)


class Lotto (Urne):
    def __init__(self):
        Urne.__init__(self,1,49)     # Die Kugeln von 1-49

    def zieheZahlen (self):
        return self.__kugeln [:6]



class Spiel77 (Urne):
    def __init__(self):
        Urne.__init__(self,0,9)


    def zieheSpiel77():
        pass

class Super6 (Spiel77):
    def __init__(self):
        Spiel77.__init__(self)
        pass
Edit XT@ngel: Code in Python Tag gesetzt

Verfasst: Samstag 16. April 2005, 14:28
von Leonidas
Der Header müsste am besten lauten:

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: cp1252 -*-
und zwischen "class Lotto" und "(Urne)" sollte kein Leerzeichen sein, genauso wie bei den def's. Ich denke, das ist Teil des Python Style Guide.

Ich täts ja so machen (achtung, ungetestet):

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*- 

import console, random

class LottoAutomat(object):
    def __init__(self, start=1, ende=49):
        self.__kugeln = []
        for i in range (start, ende+1):
            self.__kugeln.append(i)

        random.shuffle (kugeln)

    def zieheZahlen(self):
        return self.__kugeln[:6]

class Spiel77Automat(LottoAutomat):
    def __init__(self):
        LottoAutomat.__init__(self)

class Super6Automat(Spiel77Automat):
    def __init__(self):
        Spiel77.__init__(self)

Verfasst: Samstag 16. April 2005, 16:41
von Gast
ja wie mach ich den jetzt noch diese ziehung bei beim spiel 77 usw.???
damit ich die klassen hirarchie beenden kann

Verfasst: Samstag 16. April 2005, 16:46
von python Dummie
der post ist von mir

Verfasst: Sonntag 17. April 2005, 07:29
von Leonidas
Anonymous hat geschrieben:ja wie mach ich den jetzt noch diese ziehung bei beim spiel 77 usw.???
damit ich die klassen hirarchie beenden kann
Du kannst zieheZahlen() bei Spiel77Automat einfach mit einer anderen def zieheZahlen() überschreiben.

Verfasst: Sonntag 17. April 2005, 13:07
von Gast

Code: Alles auswählen

#!/usr/bin/env python 
# -*- encoding: latin-1 -*- 

import console, random 

class LottoAutomat(object): 
    def __init__(self, start=1, ende=49): 
        self.__kugeln = [] 
        for i in range (start, ende+1): 
            self.__kugeln.append(i) 

        random.shuffle (kugeln) 

    def zieheZahlen(self): 
        return self.__kugeln[:6] 

class Spiel77Automat(LottoAutomat): 
    def __init__(self): 
        LottoAutomat.__init__(self, start=0, ende=9) 
    def zieheZahlen(self):
        return.__kugeln[:7]

class Super6Automat(Spiel77Automat): 
    def __init__(self): 
        Spiel77.__init__(self)
    

ich hoffe das es soweit richtig ist aber wie mache ich den jetzt das bei Super6Automat die gleichen Zahlen wie bei spiel77Automat ausgegeben werden (aber halt nur die letzten 6 ZAhlen)

EDIT: Code-Tags eingefügt.

Verfasst: Sonntag 17. April 2005, 13:09
von python Dummie
sry ich vergess immmer den Benutzernamen bin halt nur gast.

wäre die klassen hirarchie den eigentlich fertig, wenn ich die ziehung von super6Automat noch hinbekomme?

Verfasst: Montag 18. April 2005, 14:50
von Leonidas
python Dummie hat geschrieben:ich hoffe das es soweit richtig ist aber wie mache ich den jetzt das bei Super6Automat die gleichen Zahlen wie bei spiel77Automat ausgegeben werden (aber halt nur die letzten 6 ZAhlen)
Wie wär's mit sowas?

Code: Alles auswählen

#!/usr/bin/env python 
# -*- encoding: latin-1 -*- 

import console, random 

class LottoAutomat(object): 
    def __init__(self, start=1, ende=49): 
        self.__kugeln = [] 
        for i in range (start, ende+1): 
            self.__kugeln.append(i) 

        random.shuffle (kugeln) 

    def zieheZahlen(self): 
        return self.__kugeln[:6] 

class Spiel77Automat(LottoAutomat): 
    def __init__(self): 
        LottoAutomat.__init__(self, start=0, ende=9) 
    def zieheZahlen(self):
        return self.__kugeln[:7]

class Super6Automat(Spiel77Automat): 
    def __init__(self): 
        Spiel77.__init__(self)
    def zeiheZahlen(self):
        return self.__kugeln[1:7]

Verfasst: Montag 18. April 2005, 22:31
von BlackJack
Das entspricht aber nicht ganz der Spezifikation: beim Spiel77 sollen doch die Ziffern auch mehrfach auftreten dürfen.

Verfasst: Dienstag 19. April 2005, 06:22
von python Dummie
stimmt. aber wie mache ich den sowas die wenn ich sag er soll zufällig zusammen setzen und dann die ersten 77 ziehen geht das nicht wie könnt ich das problem lösen?

Verfasst: Dienstag 19. April 2005, 12:37
von Leonidas
BlackJack hat geschrieben:Das entspricht aber nicht ganz der Spezifikation
Na, etwas Arbeit darf python Dummie schon selbst machen.

Verfasst: Donnerstag 28. April 2005, 15:13
von python Dummie
ich versuche das prog jetzt einfach mal so zu machen ich hab es nicht abgegeben.

Code: Alles auswählen

import  random

class LottoAutomat(object):
    def __init__(self, start=0, ende=9):
        self.__kugeln = []
        for i in range (start, ende+1):
            self.__kugeln.append(i)



    def zieheZahlen(self):
        random.shuffle (self.__kugeln)
        return self.__kugeln[:6]

class Spiel77Automat(LottoAutomat):
    def __init__(self):
        LottoAutomat.__init__(self, start=0, ende=9)
    def zieheZahlen(self):
        return self.__kugeln[:7]

class Super6Automat(Spiel77Automat):
    def __init__(self):
        Spiel77.__init__(self)
    def zeiheZahlen(self):
        return self.__kugeln[1:7]

if __name__ == "__main__":
    test = LottoAutomat()
    print test.zieheZahlen()
EDIT by mawe: Python-tags eingefügt
__________________________________
soweit is meine kllassen hirarchie fertig aber irgendwie funzt die klsse spiel77 nicht . wenn ich die ausgabe von den zahlen machen will sagt der da wäre ein fehler.
und bitte sagt mir jemand wie ich das mache, das die zahlen doppelt vorkeommen dürfen.

Verfasst: Donnerstag 28. April 2005, 15:15
von python Dummie
sry in der ersten klasse müssen die zahlen natürlich von 1-49 und nicht von 0-9

Verfasst: Donnerstag 28. April 2005, 15:44
von python Dummie

Code: Alles auswählen

import random

class LottoAutomat(object):
    def __init__(self, start=1, ende=49):
        self.__kugeln = []
        for i in range (start, ende+1):
            self.__kugeln.append(i)



    def zieheZahlen(self):
        random.shuffle (self.__kugeln)
        return self.__kugeln[:6]

class Spiel77Automat(LottoAutomat):

    def zieheZahlen(self):
        kugeln = []
        for z in range(7):
            kugeln.append(random.randint(0, 9))
        return kugeln

class Super6Automat(Spiel77Automat):
    def zieheZahlen(self):
        return Spiel77Automat.zieheZahlen(self)[1:]


if __name__ == "__main__":

    lotto = LottoAutomat()
    print lotto.zieheZahlen()
    s77 = Spiel77Automat()
    print s77.zieheZahlen()
    s6 = Super6Automat()
    print s6.zieheZahlen()

so ich hab das jetzt nochmal überarbeitet. aber warum sind die Zahlen von spiel77 und super6 nicht gleich????
was mach ich falsch???
kann mir jemand helfen.

EDIT by mawe: Python-tags eingefügt - SEUFZ