Seite 1 von 1

For-Schleife stimmt nicht :-(

Verfasst: Dienstag 4. Mai 2021, 10:19
von Dan88
Hallo Leute,

ich bin realtiv neu dabei und mache mich gerade dabei eine Aufgabe für die Arbeit zu lösen. Ich hab folgendes kleine python skript und finde nicht das Problem das mir nicht die Ausgabe ausspuckt die ich erwarten. Kann mich jemand in die richtige Richtung schubsen :-)

Code: Alles auswählen

elements = [2131026,2131560]

pnames = ["lfNr","BT/Etage","Raum / Bereich","DN","Nennweite Q3 = m³/h","AKS","Zähler Nr.","Stand"]
pvalues = [
    ["1","AU1",	"WWB Küche Sanitärzentrale A.-2.TE.020","25","6,3","AU2_014_SAN_ZAE_WZ005","…","0,00"],
    ["2","AU2","Fettabscheider Sanitärzentrale A.-2.TE.020","15","2,5","AU2_014_SAN_ZAE_WZ006","…","0,00"],
    ]

for ele in elements:
    print(ele , "-----------------------------------------------------------------------------------")
    for pvalue in pvalues:
        #print(pValue)
        for j in range(0,len(pnames)):
            #print(j)
            #print(ele)
            pGet = pnames[j]
            pSet = pvalue[j]
            print(pGet)
            print(pSet)



Was ich als Ausgabe erwarte:

2131026 -----------------------------------------------------------------------------------
lfNr
1
BT/Etage
AU1
Raum / Bereich
WWB Küche Sanitärzentrale A.-2.TE.020
DN
25
Nennweite Q3 = m³/h
6,3
AKS
AU2_014_SAN_ZAE_WZ005
Zähler Nr.

Stand
0,00

2131560 -----------------------------------------------------------------------------------

lfNr
2
BT/Etage
AU2
Raum / Bereich
Fettabscheider Sanitärzentrale A.-2.TE.020
DN
15
Nennweite Q3 = m³/h
2,5
AKS
AU2_014_SAN_ZAE_WZ006
Zähler Nr.

Stand
0,00

Was ich als Ausgabe bekomme:
2131026 -----------------------------------------------------------------------------------
lfNr
1
BT/Etage
AU1
Raum / Bereich
WWB Küche Sanitärzentrale A.-2.TE.020
DN
25
Nennweite Q3 = m³/h
6,3
AKS
AU2_014_SAN_ZAE_WZ005
Zähler Nr.

Stand
0,00
lfNr
2
BT/Etage
AU2
Raum / Bereich
Fettabscheider Sanitärzentrale A.-2.TE.020
DN
15
Nennweite Q3 = m³/h
2,5
AKS
AU2_014_SAN_ZAE_WZ006
Zähler Nr.

Stand
0,00
2131560 -----------------------------------------------------------------------------------
lfNr
1
BT/Etage
AU1
Raum / Bereich
WWB Küche Sanitärzentrale A.-2.TE.020
DN
25
Nennweite Q3 = m³/h
6,3
AKS
AU2_014_SAN_ZAE_WZ005
Zähler Nr.

Stand
0,00
lfNr
2
BT/Etage
AU2
Raum / Bereich
Fettabscheider Sanitärzentrale A.-2.TE.020
DN
15
Nennweite Q3 = m³/h
2,5
AKS
AU2_014_SAN_ZAE_WZ006
Zähler Nr.

Stand
0,00

Re: For-Schleife stimmt nicht :-(

Verfasst: Dienstag 4. Mai 2021, 10:32
von Dennis89
Hallo,

ist dir der Grund für deine Ausgabe klar?
Du startest eine Schleife, in dieser startest du die nächste und in dieser startest du noch mal eine. Dann werden die Schleifen von innen nach außen abgearbeitet.
Legst du die Liste von Hand an? Müssen die so sein? Wo kommen die Daten her? Kann man eventuell eine andere Datenstruktur wie Dictonary's verweden?
Ich frage deshalb, weil es meiner Meinung nach, dadurch einfacher, übersichtlicher und besser erweiterbar ist, um auf die Daten zuzugreifen.

Vielleicht wäre auch ein Umriss deines Programms hilfreich und man kann gleich von Anfang an, die "richtige" Programmstruktur wählen.

Grüße
Dennis

Re: For-Schleife stimmt nicht :-(

Verfasst: Dienstag 4. Mai 2021, 10:58
von Sirius3
Benutze keine kryptischen Abkürzungen. Was soll das p bei pvalues und pnames bedeuten? ele?
Warum gibt es `elements` und unabhängig davon noch eine Liste `pvalues`?
Über einen Index iteriert man in Python nicht, weil man auch direkt über die Elemente iterieren kann.
Was Dir fehlt ist die zip-Funktion.

Code: Alles auswählen

elements = [2131026, 2131560]

pnames = ["lfNr","BT/Etage","Raum / Bereich","DN","Nennweite Q3 = m³/h","AKS","Zähler Nr.","Stand"]
pvalues = [
    ["1","AU1", "WWB Küche Sanitärzentrale A.-2.TE.020","25","6,3","AU2_014_SAN_ZAE_WZ005","…","0,00"],
    ["2","AU2","Fettabscheider Sanitärzentrale A.-2.TE.020","15","2,5","AU2_014_SAN_ZAE_WZ006","…","0,00"],
]

for element, values in zip(elements, pvalues):
    print(element, "-" * 84)
    for name, value in zip(pnames, values):
        print(name)
        print(value)

Re: For-Schleife stimmt nicht :-(

Verfasst: Dienstag 4. Mai 2021, 12:20
von Dan88
@Dennis
Danke für deine Antwort.

Die Listen stamme auch der Python API von Dynamo. Ein Plug-In für Revit, deshalb sind die als gegeben anzusehen.

@Sirius
Super. Danke. Ich muss mir die zip-Funktion mal genauer anschauen.

Viele Grüße
Daniele