Was mache ich mit der zip-Funktion falsch?

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.
htw7448
User
Beiträge: 51
Registriert: Montag 16. April 2007, 10:59
Wohnort: Messel(Hessen)
Kontaktdaten:

Was mache ich mit der zip-Funktion falsch?

Beitragvon htw7448 » Montag 14. Januar 2008, 11:07

folgender Code:

Code: Alles auswählen

testdict{}
gtype = ['1-Modell', '2-Modell', '3-Modell']
grange = [(1, 130), (201, 330), (501, 630)]
stype = '1-Modell'

for (key, (start, stop)) in zip(gtype, grange):
   testdict[key] = ["%s30%03i_1" %(stype[0], value for value in xrange(start, stop + 1))]


führt zu einer allemeinen Fehlermeldung. Sobald ich mehrere Strings über den Formatierungsoperator einfügen möchte steigt Python aus. Liegt das evtl. an der xrange-Funktion?

Bin derzeit etwas ratlos...
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Beitragvon Mad-Marty » Montag 14. Januar 2008, 11:21

Und wie ist denn die allgemeine Fehlermeldung?
htw7448
User
Beiträge: 51
Registriert: Montag 16. April 2007, 10:59
Wohnort: Messel(Hessen)
Kontaktdaten:

Beitragvon htw7448 » Montag 14. Januar 2008, 11:25

python ist an der Stelle als Scriptsprache eingebettet. Er spuckt lediglich invalid syntax aus. Wenn man einen Formatierungsoperator weglässt geh es, aber ich brauch eben 2.

Code: Alles auswählen

testdict{}
gtype = ['1-Modell', '2-Modell', '3-Modell']
grange = [(1, 130), (201, 330), (501, 630)]
stype = '1-Modell'

for (key, (start, stop)) in zip(gtype, grange):
    testdict[key] = ["30%03i_1" %value for value in xrange(start, stop + 1)]
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Beitragvon Zap » Montag 14. Januar 2008, 11:57

Wer ist denn "Er"?

Also hiermit sind die Syntaxfehler schonmal besetigt:

Code: Alles auswählen

testdict = {} # Zuweisung fehlte
gtype = ['1-Modell', '2-Modell', '3-Modell']
grange = [(1, 130), (201, 330), (501, 630)]
stype = '1-Modell'

for (key, (start, stop)) in zip(gtype, grange):
    # Tupelbuildung und füllen des Strings hier muss innerhalb der List-Comprehension passieren
    testdict[key] = ["%s30%03i_1" % (stype[0], value) for value in xrange(start, stop + 1)]


Ergebnis:

Code: Alles auswählen

In [33]: testdict
Out[33]:
{'1-Modell': ['130001_1',
              '130002_1',
              '130003_1',
              '130004_1',
              '130005_1',
              '130006_1',
              '130007_1',
              '130008_1',
...


Es ist übrigens nicht schlecht wenn man seinen Code einfach in einem Script oder in der Interactiven Shell testet.

Gruß Zap

PS: Ich hab den Sinn und Zweck des Skripts nicht geprüft.
htw7448
User
Beiträge: 51
Registriert: Montag 16. April 2007, 10:59
Wohnort: Messel(Hessen)
Kontaktdaten:

Beitragvon htw7448 » Montag 14. Januar 2008, 12:44

das script soll genauso laufen zap. danke.

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]