Okay heres my code...

for swipeload in range (0, 15, 1):
    "E"+str(swipeload)+"_Path" = os.path.join("data","E"+str(swipeload)+".gif")
    "E"+str(swipeload) = pygame.image.load("E"+str(swipeload)+"_Path")

So basically I have a bunch of images called "E1, E2, E3, E4, etc..." and I want to load them all into the cache without having to type the code for every single image....

But why doesn't this bit of code seem to work? I know it has to do something with the str() code but idk what :-(

Heres how I would normally load one of these images....

E1_Path = os.path.join("data", "E1.gif")
    E1 = pygame.image.load(E1_Path)

The error says "Can't assign to operator".....

Any Help?!? Thanks :)

Yeah you cant assign values to a string. Thats what your program is trying to do. Well i would advise using a dictionary for this one:

d1 = {}
d2 = {}
for swipeload in range (0, 15, 1):
    d1["E"+str(swipeload)+"_Path"] = os.path.join("data","E"+str(swipeload)+".gif")
    d2["E"+str(swipeload)] = pygame.image.load("E"+str(swipeload)+"_Path")

This now has a dictionary where the string values are the keys and the values are what you want. The first dictionary holds the path while the second dictionary holds the image.

Hope that helps

Alternatively you could do this:

for swipeload in range (0, 15, 1):
	exec('E'+str(swipeload)+'_Path = os.path.join("data","E"+str(swipeload)+".gif")')
	exec('E'+str(swipeload)+' = pygame.image.load("E"+str(swipeload)+"_Path")')

But dictionaries are a better option.

I would suggest lists like this

cnt_img = 15
E_Path = [os.path.join("data", "E%d.gif" % k) for k in xrange(cnt_img)]
E = [pygame.image.load(E_Path[k]) for k in xrange(cnt_img)]

Then you can use E[k] and E_Path[k] to get the k-th image or path.

mabey you could re-write it like this:

cnt_img = 15 E_Path = [os.path.join("data", "E%d.gif" % k) for k in xrange(cnt_img)] E = [pygame.image.load(E_Path[k]) for k in xrange(cnt_img)] cnt_img = 15 E_Path = [os.path.join("data", "E%d.gif" % k) for k in xrange(cnt_img)] = [pygame.image.load(E_Path[k]) for k in xrange(cnt_img)]

Now use E[k] and E_Path[k] to get the k-th image[code=python]


cnt_img = 15
E_Path = [os.path.join("data", "E%d.gif" % k) for k in xrange(cnt_img)]
E = [pygame.image.load(E_Path[k]) for k in xrange(cnt_img)]
cnt_img = 15 E_Path = [os.path.join("data", "E%d.gif" % k) for k in xrange(cnt_img)] = [pygame.image.load(E_Path[k]) for k in xrange(cnt_img)]


Now use E[k] and E_Path[k] to get the k-th image

This article has been dead for over six months. Start a new discussion instead.