2009-06-25 5 views
0

Mon code:Impossible de mettre une variable dans l'impression de Python

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\">" 

Je cours et je me

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 

Je veux la sortie suivante

<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"> 

... 

J'ai aussi exécuter le même code avec la syntaxe pour la liste échoue photo = {[7 0,72,73], ...}

Comment pouvez-vous faire fonctionner le code Python?

Répondre

2

Voici donc votre solution simple à votre problème simple

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

Il y a un problème dans la photo variable depuis que je reçois http: // dpaste .com/59845/ –

+1

Hmm êtes-vous sûr? Je l'ai juste couru et j'ai obtenu http://dpaste.com/59851/ – Toby

+0

@Toby: Vous avez raison - le code fonctionne. J'ai apparemment frappé un mauvais bouton pour faire face au code. –

3

Les accolades sont utilisées pour indiquer un dictionnaire (tableau associatif). Vous voulez utiliser des crochets, ce qui indique une liste.

Aussi vous ne voulez probablement pas 51-52 dans cette première ligne, car cela évaluera à -1. Vous devriez mettre "51-52" pour vous assurer que c'est une chaîne.

Ensuite, pour obtenir l'indexation que vous semblez vouloir, vous devez faire l'année ** [i] ** au lieu de juste l'année, qui imprime la liste entière.

1

Puisque vous essayez de parcourir au fil des années et imprimer des photos pour cette année, je le ferais de cette façon:

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\">" 

Vous obtenir:

<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"> 

Je voudrais stocker des photos et des années dans le dictionnaire comme indiqué ci-dessus, mais si vous avez des années et des photos dans des listes séparées (comme dans votre question), vous pouvez créer des photos comme cela, années de notes sont entre guillemets « »:

photos = {} 

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

Les fonctions .keys() et .sort() sont géniales. –

Questions connexes