Da bei mehreren Versuchen immer wieder feststellte dass sich die einzelnen Würfe kaum unterschieden entschied ich mich statdessen alle möglichen Würfe auszugeben, deren Anzahl und die Prozentzahl. Da dies nun mein erstes eigenes Programm ist sind Verbesserungsvorschläge wilkommen und mich würde interessieren ob ich die Klasse Statisch machen kann so dass ich nicht bei jedem Aufruf eine neue Instanz erzeugen muss.
Code: Alles auswählen
import random
class Wuerfelbecher(object):
def __init__(self):
self.__anzahlSeiten = 0
self.__anzahlWuerfe = 0
self.__dictErgebnis = {}
def __wuerfeAbfragen(self):
""" Benutzereingabe Anzahl der Wuerfe
"""
while self.__anzahlWuerfe < 1 or self.__anzahlWuerfe > 1000:
try:
self.__anzahlWuerfe = int(input("Anzahl der Wuerfe (1 - 1000): "))
except ValueError:
print("Bitte nur Ganzzahlen eingeben!")
def __seitenAbfragen(self):
""" Benutzereingabe Anzahl der Seiten
"""
while self.__anzahlSeiten < 1 or self.__anzahlSeiten > 24:
try:
self.__anzahlSeiten = int(input("Anzahl der Seiten (1 - 24): "))
except ValueError:
print("Bitte nur Ganzzahlen eingeben!")
def __wuerfelsequenz(self):
""" Durch Zufallsgenerator erzeugte Wuerfe
"""
random.seed()
zaehler = 0
while zaehler < self.__anzahlWuerfe:
wurf = random.randint(1, self.__anzahlSeiten)
try:
self.__dictErgebnis[wurf] += 1
except KeyError:
self.__dictErgebnis[wurf] = 1
zaehler += 1
def __dictAusgeben(self):
""" Formatierte Ausgabe des Dictionarys
"""
zaehler = 1
while zaehler <= self.__anzahlSeiten:
prozent = self.__dictErgebnis[zaehler] / self.__anzahlWuerfe * 100
try:
print("%2d wurde %3d mal gewuerfelt (%3.2f%%)." % (zaehler, self.__dictErgebnis[zaehler], prozent))
except KeyError:
print("%2d wurde 0 mal gewuerfelt (%3.2f%%)." % (zaehler, prozent))
zaehler += 1
del self.__dictErgebnis
del self.__anzahlSeiten
del self.__anzahlWuerfe
def programmBeginnen(self):
""" Oeffentliche Methode zur Programmausfuehrung
"""
self.__wuerfeAbfragen()
self.__seitenAbfragen()
self.__wuerfelsequenz()
self.__dictAusgeben()