954,541 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Why Isn't This Working?

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 :)

iamoldest
Newbie Poster
9 posts since Mar 2008
Reputation Points: 10
Solved Threads: 0
 

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

Paul Thompson
Veteran Poster
1,119 posts since May 2008
Reputation Points: 264
Solved Threads: 183
 

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.

tyincali
Light Poster
45 posts since Oct 2008
Reputation Points: 31
Solved Threads: 7
 

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.

Gribouillis
Posting Maven
Moderator
2,786 posts since Jul 2008
Reputation Points: 1,044
Solved Threads: 691
 

mabey you could re-write it like this:
[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

tomtetlaw
Practically a Master Poster
605 posts since Sep 2008
Reputation Points: 9
Solved Threads: 5
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You