Seite 1 von 1

Tabelle erzeugen

Verfasst: Samstag 19. Dezember 2015, 12:57
von Fin97
Guten Tag,
ich verzweifel gerade daran mehrere Daten als Tabelle auszugeben.
es geht darum, dass ich verschiedene Angestellte erzeuge (diese besitzen die Atribute: Name, Position, Gehalt, Urlaub)
Nun ist zu einem die Frage, ob ich jeden der 5 zufällig generierten Arbeiter in eine Liste packe, für jeden Angestellten eine Liste mache, oder eine Liste für alle Namen + eine für alle Positionen + eine für alle Gehälter + eine für alle Urlaube)

Dann sollen diese Daten in einer Liste ausgeben werden, die ungefähr so aussehen soll:

Code: Alles auswählen

Name     Position     Gehalt     Urlaub
_____     ______     ______    ______
Otto       12            1000        23
Heinz      3             20000      12
Inga        20           300          10
Hans       5             15000       5
Domi      13            100          100
Nun habe ich jedoch keinen Ansatz wie ich das ganze Umsetzen kann.
Würde mich sehr über Unterstützung, Ansätze, Lösungen freuen,
viele Grüße
Fin

Re: Tabelle erzeugen

Verfasst: Samstag 19. Dezember 2015, 13:54
von Sirius3
@Fin97: in Deinem anderen Post hattest Du noch eine Klasse "Angestelter", also würde man die ganzen Angaben als Attribute von Angestelter-Instanzen speichern, die in einer Liste sind. Mehrere parallele Listen macht man nicht, weil es umständlich und fehleranfällig ist. Zum formatierten Ausgeben bietet sich str.format an. In den Formatstring kann man dann gleich die Namen der Attribute (name, position, gehalt, ...) schreiben.

Re: Tabelle erzeugen

Verfasst: Samstag 19. Dezember 2015, 19:36
von pixewakb
Möglicherweise für Dich hilfreich, weil ich IMHO die vorgeschlagenen Sachen mal umgesetzt habe (Angestellten in einer Liste, die Angestellten sind Objekte einer Klasse Angestellter und die Ausgabe erfolgt mittels format()-Funktion):

Code: Alles auswählen

import random

class Angesteller(object):
    """ Modelliert einen Angestellten
    """
    
    def __init__(self, name, position, gehalt, urlaub):
        self.name = name
        self.position = position
        self.gehalt = gehalt
        self.urlaub = urlaub


def angestellte_ausgeben(mitarbeiterliste):
    for spaltenkopf in ["Name", "Position", "Gehalt", "Urlaub"]:
        print("{:10s}".format(spaltenkopf), end=" ")
    print()
    print(43 * "=")
    
    for mitarbeiter in mitarbeiterliste:

        print("{:10s} {:10d} {:10.2f} {:10d}".format(mitarbeiter.name,
                                      mitarbeiter.position,
                                      mitarbeiter.gehalt,
                                      mitarbeiter.urlaub))


def main():
    
    mitarbeiterliste = []
    
    for name in ["Otto", "Heinz", "Inga", "Hans", "Domi"]:

        # Werte je Mitarbeiter werden zufällig bestimmt
        angestellter = Angesteller(name,
                                   random.randint(1,20),
                                   random.randint(1,200) * 100,
                                   random.randint(1,100))

        mitarbeiterliste.append(angestellter)
    angestellte_ausgeben(mitarbeiterliste)


if __name__ == "__main__":
    main()
Wahrscheinlich ist meine Umsetzung noch verbesserungswürdig. Feedback gerne. Ich lerne da immer noch.

PS Ausgabe sieht dann in der Konsole z. B. so aus:

Code: Alles auswählen

Name       Position   Gehalt     Urlaub     
===========================================
Otto               16   11000.00         17
Heinz               2   15400.00         54
Inga               18   13700.00         68
Hans               14    9700.00         90
Domi               11   13300.00         90