[Tutor] Simpler way to do this (for-loop)?

Andreas Kostyrka andreas at kostyrka.org
Tue Nov 16 18:43:15 CET 2004


Am Di, den 16.11.2004 schrieb Olli Rajala um 12:34:
> Okay, I've been coding my own photogallery and in admin-site I have
> this kind of code. Well, to put it short, it works but is anything
> but goodlooking... And I have no idea how to make it better, so I
> thought to ask here.
> 
> So, 'categories' is just a list with names of categories and I'd like
> to set the default value of the select in html the value found in
> 'category'. Sorry the not so good English. :( 
> 
> So, any ideas how to refactor that part of code?
> 
> ************************************************************
> print 'Category: <select name="category">'
> if not category:
> 	print '<option selected>(Choose the category)</option>'
> 	for line in categories:
> 		print '<option>%s</option>\n' % (line)
> else:
> 	print '<option>(Choose the category)</option>'
> 	for line in categories:
> 		if line == category:
> 			print '<option selected>%s</option>\n' % (line)
> 		else:
> 			print '<option>%s</option>\n' % (line)
> print '</select><br />'
> ************************************************************
Untested code:
print 'Category: <select name="category">'
for cat in categories:
    print '<option%s>%s</option>' % ((cat == category) and " selected" or "", cat)
print '</select><br />'

Alternativly (still untested):
print 'Category: <select name="category">'
for cat in categories:
    if cat == category:
        selected = " selected"
    else:
        selected = ""
    print '<option%s>%s</option>' % (selected, cat)
print '</select><br />'

Important things to point out:
      * You can compare None in Python with any other object. It's just
        usually not equal ;)
      * You do not need to write '% (line)', either '% line' is enough,
        because you know that line will never ever be a tuple, or you
        should use '% (line, )'. The comma at the end signals it as a
        tuple.

Andreas
> 
> TIA, 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Dies ist ein digital signierter Nachrichtenteil
Url : http://mail.python.org/pipermail/tutor/attachments/20041116/e4e7a152/attachment.pgp


More information about the Tutor mailing list