2009-06-25 11 views
0

Mein Code setzen:Kann eine Variable in Python Druck

year=[51-52,53,55,56,58,59,60,61] 
photo=[{70,72,73},{64,65,68},{79,80,81,82},{74,77,78},{60,61,62},{84,85,87},{57,58,59},{53,54,55,56}] 

for i in range(7): 
    print "<img src=\"http://files.getdropbox.com/u/100000/Akuja/",year,"/P10104",photo,".JPG\">" 

ich es laufen, und ich bekomme

File "/tmp/aku.py", line 2 
    photo=[{70,72,73},{64,65,68},{79,80,81,82},{74,77,78},{60,61,62},{84,85,87},{57,58,59},{53,54,55,56}] 
      ^
SyntaxError: invalid syntax 

ich die folgende Ausgabe

<img src="http://files.getdropbox.com/u/100000/Akuja/51-52/P1010470.JPG"> 
<img src="http://files.getdropbox.com/u/100000/Akuja/51-52/P1010472.JPG"> 
<img src="http://files.getdropbox.com/u/100000/Akuja/51-52/P1010473.JPG"> 

<img src="http://files.getdropbox.com/u/100000/Akuja/53/P1010464.JPG"> 
<img src="http://files.getdropbox.com/u/100000/Akuja/53/P1010465.JPG"> 
<img src="http://files.getdropbox.com/u/100000/Akuja/53/P1010468.JPG"> 

... 

will ich auch führe den gleichen Code mit der Syntax für die Liste erfolglos photo = {[7 0,72,73], ...}

Wie können Sie den Python-Code arbeiten lassen?

Antwort

2

So, hier ist Ihre einfache Lösung für Ihr einfaches Problem

year=['51-52', '53', '55' , '56' , '58', '59', '60', '61'] 
photo=[[70,72,73], [64,65,68],[79,80,81,82],[74,77,78],[60,61,62],[84,85,87],[57,58,59],[53,54,55,56]] 

for i in range(len(year)): 
    for j in range(len(photo[i])): 
     print '<img src=\"http://files.getdropbox.com/u/100000/Akuja/%s/P10104%s.JPG>' % (year[i], photo[i][j]) 
+0

Es gibt ein Problem in dem Variablen Foto, da ich http: // dpaste .com/59845/ –

+1

Hmm bist du sicher? Ich lief es einfach und bekam http://dpaste.com/59851/ – Toby

+0

@Toby: Du hast Recht - der Code funktioniert. Ich habe anscheinend einen falschen Knopf gedrückt, als ich den Code bearbeitet habe. –

3

Klammern werden verwendet, um ein Wörterbuch (assoziatives Array) anzuzeigen. Sie möchten eckige Klammern verwenden, die eine Liste angeben.

Auch Sie wollen wahrscheinlich nicht 51-52 in dieser ersten Zeile, da dies zu -1 ausgewertet wird. Sie sollten "51-52" eingeben, um sicherzustellen, dass es sich um eine Zeichenfolge handelt.

Dann, um die Indizierung zu bekommen, die Sie scheinen wollen, müssen Sie Jahr ** [i] ** statt nur Jahr zu tun, die die gesamte Liste druckt.

1

Da Sie versuchen Jahre iterieren und Drucken von Fotos für dieses Jahr würde ich es auf diese Weise tun:

year=["51-52","53","55","56","58","59","60","61"] 
photo=[(70,72,73),(64,65,68),(79,80,81,82),(74,77,78),(60,61,62), 
     (84,85,87),(57,58,59),(53,54,55,56)] 

# this dictionary will be generated with the code below 
#photos = { 
# "51-52": (70,72,73), 
# "53": (64,65,68), 
# "55": (79,80,81,82), 
# "56": (74,77,78), 
# "58": (60,61,62), 
# "59": (84,85,87), 
# "60": (57,58,59), 
# "61": (53,54,55,56) 
#} 


photos = {}       # create photos dictionary 

for y in xrange(len(year)): 
    photos[year[y]] = photo[y] 

years = photos.keys()    # sort the years 
years.sort() 

for year in years: 
    for photo in photos[year]: 
     print "<img src=\"http://files.getdropbox.com/u/100000/Akuja/"+year+"/P10104"+str(photo)+".JPG\">" 

Sie erhalten:

<img src="http://files.getdropbox.com/u/100000/Akuja/51-52/P1010470.JPG"> 
<img src="http://files.getdropbox.com/u/100000/Akuja/51-52/P1010472.JPG"> 
<img src="http://files.getdropbox.com/u/100000/Akuja/51-52/P1010473.JPG"> 
<img src="http://files.getdropbox.com/u/100000/Akuja/53/P1010464.JPG"> 
<img src="http://files.getdropbox.com/u/100000/Akuja/53/P1010465.JPG"> 
<img src="http://files.getdropbox.com/u/100000/Akuja/53/P1010468.JPG"> 

Ich würde Fotos und Jahre im Wörterbuch wie oben gezeigt speichern, aber wenn Sie Jahre haben und Fotos in separaten Listen (wie in Ihrer Frage) können Sie die Fotos wie diese erstellen können, Anmerkung Jahre sind in Anführungszeichen „“:

photos = {} 

for y in xrange(len(year)): 
    photos[year[y]] = photo[y] 
+0

Die Funktionen .keys() und .sort() sind großartig. –