geordnete ausgabe mit formatting aber wie?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
splsah
User
Beiträge: 5
Registriert: Mittwoch 14. Dezember 2005, 19:20

hi leute ich müsste euch mal um eure hilfe bitten und zwar habe ich ja in diesem http://www.python-forum.de/viewtopic.php?t=4669 thread
ja schon mal mein script vorgestellt.

der unterschied zu diesem script ist das hier nun die zehn zufällig erzeugten
zwerge in einer liste gespeichert werden und ebenfalls wider ausgegeben werden

also hier ist mal der neue scriptcode:

Code: Alles auswählen

#Obersteklasse,welche die Steuern ausrechnet und sonst alle informationen über die hofzbediensteten festlegtt
class hofburg:
    def __init__(self):
        self.name=''
        self.basisfreibetrag=10
        self.freibetrag=0
        self.steuerbetrag=0
        self.nettogehalt=0
 
    def berechnung(self):#Prozedur um die Steuern vom Gehalt abzuziehen
        self.freibetrag=self.basisfreibetrag+self.zusatzfreibetrag
        if self.bruttogehalt > 13:
            self.steuerbetrag=(self.bruttogehalt-self.freibetrag)*45/100 #Formel um die Steuer zu berechnen
        else:
            self.freibetrag=self.bruttogehalt
        self.nettogehalt=self.bruttogehalt-self.steuerbetrag
        
                         
    def ausgabe(self):            
        print 'Nummer des Zwerges:'+str(self.name)
        print 'Beruf:'+str(self.z)
        print 'Bruttogehalt:'+str(self.bruttogehalt)
        print 'Basisfreibetrag:'+str(self.basisfreibetrag)
        print 'Zusatzfreibetrag:'+str(self.zusatzfreibetrag)
        print 'Freibetrag:'+str(self.freibetrag)
        print 'Steuer:'+str(self.steuerbetrag)
        print 'Nettogehalt:'+str(self.nettogehalt)        
 
 
#Basisklasse der Hofzwerge
class hofzwerge(hofburg):
    def __init__(self):
       hofburg.__init__(self)

 
#Hofzwerge 1.Klasse
class hofzwerg1klasse(hofzwerge):
    def __init__(self):
        self.z='Hofzwerg 1.Klasse'
        self.bruttogehalt=35
        self.zusatzfreibetrag=3
        hofzwerge.__init__(self)
 
 
#Hofzwerge 2.Klasse
class hofzwerg2klasse(hofzwerge):
    def __init__(self):
        self.z='Hofzwerg 2.Klasse'
        self.bruttogehalt=45
        self.zusatzfreibetrag=4
        hofzwerge.__init__(self) 
 
 
#Basisklass der Zeitarbeiter(Achtung diese Arbeiter werden nach Arbeitszeit bezahlt)
class zeitarbeiter(hofburg):
    def __init__(self):
        self.zusatzfreibetrag=3
        hofburg.__init__(self)
 
#Klasse der Kammerkaligraphen
class kammerkaligraph(zeitarbeiter):
    def __init__(self):
        self.z='Kammerkaligraph'
        self.stundenlohn=2
        self.stundenanzahl=1
        self.bruttogehalt=self.stundenlohn*self.stundenanzahl #Berechnung des Gehaltes
        zeitarbeiter.__init__(self)
 
 
#Klasse der Hofpompfuenbristen
class hofpompfuenebristen(zeitarbeiter):
    def __init__(self):
        self.z='Hofpompfuenebristen'
        self.stundenlohn=8
        self.stundenanzahl=1
        self.bruttogehalt=self.stundenanzahl*self.stundenlohn
        zeitarbeiter.__init__(self) #Basisklasse wird als Prozedur in der Unterklasse aufgeführtt
 
 
# Hier beginnt das eigentliche script denn hier werden nun die Bediensteten entwickelt
 
 
import random
l=[]
for i in range(1,11):
    x = random.randint(1, 4)
    if x==1:
        z=hofzwerg1klasse()
        l.append(z)
    elif x==2:
        z=hofzwerg2klasse()
        l.append(z)
    elif x==3:
        z=kammerkaligraph()
        l.append(z)
    elif x==4:
        z=hofpompfuenebristen()
        l.append(z)
    z.name = i
    z.berechnung()#Steuer des jeweiligen Zwerges wird berechnet
    z.ausgabe()#Ausgabe der Steuern mit der dazugehörigen Nummer des Zwerges
nun will unser infolehrer
das diese sachen geordnet in einer tabelle im ausgabefenster ausgeben werden
jedenfalls habe ich schon gehört das geht auch mit tkinter aber unser lehrer will das nicht, warum auch immer, wnaja kenne mich mit tkinter auch ncoh nicht aus.
jedenfalls hat er uns dann auf die libary reference in python >index>% formatting hingewiesen, aber ich werde darus nicht schlau und meine mitschüler auch nicht. jedenfalls wollte ich euch mal um hilfe bitten, d.h. nur um einen hinweis oder so oder ein beispiel, denn in der wiki und durch die forumsuche habe ich nichts gefunden.
habe nochmal ein bild angehängt wie sich das mein lehrer vorstellt:
http://www.sebastians-home.de/tabelle.gif
Zuletzt geändert von splsah am Sonntag 25. Dezember 2005, 15:56, insgesamt 1-mal geändert.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

splsah hat geschrieben:nun will unser infolehrer (gott weiß ich hasse ihn;))
Wenn der nicht ganz auf dem Kopf gefallen ist, wird es sicherlich deinen Beitrag schnell im Netz finden, als dir lieb ist :lol:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
splsah
User
Beiträge: 5
Registriert: Mittwoch 14. Dezember 2005, 19:20

also sorry leute wir kommen nicht weiter, haben da etwas formuliert aber es klappt nicht und wir erkennen leider nicht den fehler

Code: Alles auswählen

import string
print 'Nr.  Brutto   Gruppe   Stlohn.   Arbeitszeit   Basisfr.   Zusatzfr.   Freib.   Steuer   Netto'
print '---------------------------------------------------------------------------------------------'
print '% 1d  2d       2s       2d           2d          2d         2d         2d       2d      2d %' (self.name)
hoffe ihr könnt uns nochmal helfen
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Das sollte eher so sein:

Code: Alles auswählen

print 'Nr.  Brutto   Gruppe   Stlohn.   Arbeitszeit   Basisfr.   Zusatzfr.   Freib.   Steuer   Netto'
print '-' * 93
print '  %d  %d       %s       %d           %d          %d         %d         %d       %d      %d' % (nr, brutto, gruppe, lohn, zeit, basis, zusatz, frei, steuer, netto)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Wohl eher so:

Code: Alles auswählen

print 'Nr.  Brutto   Gruppe   Stlohn.   Arbeitszeit   Basisfr.   Zusatzfr.   Freib.   Steuer   Netto'
print '-' * 93
print '  %2d  %2d       %2s       %2d           %2d          %2d         %2d         %2d       %2d      %2d' % (nr, brutto, gruppe, lohn, zeit, basis, zusatz, frei, steuer, netto)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Kommt davon, wenn man es nur aus dem Kopf macht ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
splsah
User
Beiträge: 5
Registriert: Mittwoch 14. Dezember 2005, 19:20

danke habe aber selbst den fehler gefunden unser code sieht jetzt so aus:

Code: Alles auswählen

#Script bei Sebastian Dewald
#Obersteklasse,welche die Steuern ausrechnet und sonst alle informationen über die hofzbediensteten festlegtt
class hofburg:
    def __init__(self):
        self.name=''
        self.basis=10
        self.frei=0
        self.steuer=0
        self.netto=0
 
    def berechnung(self):#Prozedur um die Steuern vom Gehalt abzuziehen
        self.frei=self.basis+self.zusatz
        if self.brutto > 13:
            self.steuer=(self.brutto-self.frei)*45/100 #Formel um die Steuer zu berechnen
        else:
            self.frei=self.brutto
        self.netto=self.brutto-self.steuer
        
                         
    def ausgabe(self):
        print "Auflistung der 10 Zwerge"             
        print ' Nr.  Brutto      Gruppe           Stlohn.   Arbeitszeit   Basisfr.   Zusatzfr.   Freib.   Steuer   Netto'
        print '---------------------------------------------------------------------------------------------------------'
        print '%3d    %2d      %1s  %2d        %3d          %3d         %3d        %3d        %2d     %3d' % (self.name,self.brutto,self.z,self.stundenl,self.stunden,self.basis,self.zusatz,self.frei,self.steuer,self.netto)
       
 
 
#Basisklasse der Hofzwerge
class hofzwerge(hofburg):
    def __init__(self):
       hofburg.__init__(self)

 
#Hofzwerge 1.Klasse
class hofzwerg1klasse(hofzwerge):
    def __init__(self):
        self.z='Hofzwerg 1.Klasse'
        self.brutto=35
        self.zusatz=3
        hofzwerge.__init__(self)
 
 
#Hofzwerge 2.Klasse
class hofzwerg2klasse(hofzwerge):
    def __init__(self):
        self.z='Hofzwerg 2.Klasse'
        self.brutto=45
        self.zusatz=4
        hofzwerge.__init__(self) 
 
 
#Basisklass der Zeitarbeiter(Achtung diese Arbeiter werden nach Arbeitszeit bezahlt)
class zeitarbeiter(hofburg):
    def __init__(self):
        self.zusatz=3
        hofburg.__init__(self)
 
#Klasse der Kammerkaligraphen
class kammerkaligraph(zeitarbeiter):
    def __init__(self):
        self.z='Kammerkaligraph'
        self.stundenl=2
        self.stunden=1
        self.brutto=self.stundenl*self.stunden #Berechnung des Gehaltes
        zeitarbeiter.__init__(self)
 
 
#Klasse der Hofpompfuenbristen
class hofpompfuenebristen(zeitarbeiter):
    def __init__(self):
        self.z='Hofpompfuenebristen'
        self.stundenl=8
        self.stunden=1
        self.brutto=self.stunden*self.stundenl
        zeitarbeiter.__init__(self) #Basisklasse wird als Prozedur in der Unterklasse aufgeführtt
 
 
# Hier beginnt das eigentliche script denn hier werden nun die Bediensteten entwickelt
 
import random
l=[]
for i in range(1,11):
    x = random.randint(1, 4)
    if x==1:
        z=hofzwerg1klasse()
        l.append(z)
    elif x==2:
        z=hofzwerg2klasse()
        l.append(z)
    elif x==3:
        z=kammerkaligraph()
        l.append(z)
    elif x==4:
        z=hofpompfuenebristen()
        l.append(z)
    z.name = i
    z.berechnung()#Steuer des jeweiligen Zwerges wird berechnet
    z.ausgabe()#Ausgabe der Steuern mit der dazugehörigen Nummer des Zwerges
jetzt habe wir nur noch zwei probs und zwar wie können wir das mit den zwei atributten stundenl und stunden machen, da diese ja nur atributte der hofpompfünebristen und die der kammerkaligraphen sind

außerdem wie erreichen wir es das die 10 zwerge in einer liste ausgegeben werden mit einer variable?
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Ist zwar keine Antwort auf eure Frage, aber dennoch ein Tipp:
Ihr schreibt:

Code: Alles auswählen

#Obersteklasse,welche die Steuern ausrechnet und sonst alle informationen über die hofzbediensteten festlegtt
class hofburg:
...
    def berechnung(self):#Prozedur um die Steuern vom Gehalt abzuziehen
... 
#Basisklasse der Hofzwerge
class hofzwerge(hofburg):
Besser ist es, die Kommentare direkt als Docstrings zu machen:

Code: Alles auswählen

class hofburg:
    "Oberste Klasse, welche die Steuern ..."
    ...
    def berechnung(self):
        "Prozedur um die Steuern vom Gehalt abzuziehen"
...
class hofzwerge(hofburg):
   "Basisklasse der Hofzwerge"
etc.

Das hat den Vorteil, das man mit help(objekt) die Beschreibung angezeigt bekommt. Bei mehrzeilgen Kommentaren diese in """ statt " einschließen.

Code: Alles auswählen

def foo():
    """Dies ist eine ganz tolle
Funktion. Jawohl, sie ist so toll, dass ich
mich gar nicht traue zu erwähnen, was sie macht."""
Edit: pydoc und epydoc nutzen diese Docstrings natürlich auch, um eine automatische API-Doku zu erstellen
Zuletzt geändert von Joghurt am Sonntag 25. Dezember 2005, 18:31, insgesamt 1-mal geändert.
splsah
User
Beiträge: 5
Registriert: Mittwoch 14. Dezember 2005, 19:20

danke dir
nochmal ein kurzes update

Code: Alles auswählen

#Script bei Sebastian Dewald
#Obersteklasse,welche die Steuern ausrechnet und sonst alle informationen über die hofzbediensteten festlegtt
class hofburg:
    def __init__(self):
        self.name=''
        self.basis=10
        self.frei=0
        self.steuer=0
        self.netto=0
 
    def berechnung(self):#Prozedur um die Steuern vom Gehalt abzuziehen
        self.frei=self.basis+self.zusatz
        if self.brutto > 13:
            self.steuer=(self.brutto-self.frei)*45/100 #Formel um die Steuer zu berechnen
        else:
            self.frei=self.brutto
        self.netto=self.brutto-self.steuer
        
                         
    def ausgabe(self):
        print "Auflistung der 10 Zwerge"             
        print ' Nr.  Brutto  Gruppe             Basisfr.    Zusatzfr.   Freib.    Steuer     Netto'
        print '-------------------------------------------------------------------------------------------'
        print '%2d    %3d   %1s           %2d            %1d     %5d       %4d      %5d' % (self.name,self.brutto,self.z,self.basis,self.zusatz,self.frei,self.steuer,self.netto)
      
 
 
#Basisklasse der Hofzwerge
class hofzwerge(hofburg):
    def __init__(self):
       hofburg.__init__(self)

 
#Hofzwerge 1.Klasse
class hofzwerg1klasse(hofzwerge):
    def __init__(self):
        self.z='Hofzwerg1kl.'
        self.brutto=35
        self.zusatz=3
        self.stundenl=0
        self.stunden=0
        hofzwerge.__init__(self)
 
 
#Hofzwerge 2.Klasse
class hofzwerg2klasse(hofzwerge):
    def __init__(self):
        self.z='Hofzwerg2kl.'
        self.brutto=45
        self.zusatz=4
        self.stundenl=0
        self.stunden=0
        hofzwerge.__init__(self) 
 
 
#Basisklass der Zeitarbeiter(Achtung diese Arbeiter werden nach Arbeitszeit bezahlt)
class zeitarbeiter(hofburg):
    def __init__(self):
        self.zusatz=3
        hofburg.__init__(self)
 
#Klasse der Kammerkaligraphen
class kammerkaligraph(zeitarbeiter):
    def __init__(self):
        self.z='Kammerkalig.'
        self.stundenl=2
        self.stunden=1
        self.brutto=self.stundenl*self.stunden #Berechnung des Gehaltes
        zeitarbeiter.__init__(self)
 
 
#Klasse der Hofpompfuenbristen
class hofpompfuenebristen(zeitarbeiter):
    def __init__(self):
        self.z='Hofpompfuen.'
        self.stundenl=8
        self.stunden=1
        self.brutto=self.stunden*self.stundenl
        zeitarbeiter.__init__(self) #Basisklasse wird als Prozedur in der Unterklasse aufgeführtt
 
 
# Hier beginnt das eigentliche script denn hier werden nun die Bediensteten entwickelt
 
import random
l=[]
for i in range(1,11):
    x = random.randint(1, 4)
    if x==1:
        z=hofzwerg1klasse()
        l.append(z)
    elif x==2:
        z=hofzwerg2klasse()
        l.append(z)
    elif x==3:
        z=kammerkaligraph()
        l.append(z)
    elif x==4:
        z=hofpompfuenebristen()
        l.append(z)
    z.name = i
    z.berechnung()#Steuer des jeweiligen Zwerges wird berechnet
    z.ausgabe()#Ausgabe der Steuern mit der dazugehörigen Nummer des Zwerges
Antworten