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

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

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:

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

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:

Montag 14. Januar 2008, 12:44

das script soll genauso laufen zap. danke.
Antworten