How would I determine zodiac / astrological star sign from a birthday in Python?

You could give them some more information about position of the planets and the stars.

import ephem 
>>> u = ephem.Uranus()
>>> u.compute('1871/3/13')
>>> print u.ra, u.dec, u.mag
7:38:06.27 22:04:47.4 5.46
>>> print ephem.constellation(u)
('Gem', 'Gemini')

I've done this before. The simplest solution that I ended up with was an array of the following key/values:

120:Cap, 218:Aqu, 320:Pis, 420:Ari, 521:Tau,
621:Gem, 722:Can, 823:Leo, 923:Vir, 1023:Lib
1122:Sco, 1222:Sag, 1231: Cap

Then you write the birth date in the mdd format, ie, month number (starting with 1 for January) and two digit day number (01-31). Iterate through the array, and if the date is less than or equal to an item in the array, you have your star sign.

EDIT I needed this so here's this concept as a working function

zodiacs = [(120, 'Cap'), (218, 'Aqu'), (320, 'Pis'), (420, 'Ari'), (521, 'Tau'),
           (621, 'Gem'), (722, 'Can'), (823, 'Leo'), (923, 'Vir'), (1023, 'Lib'),
           (1122, 'Sco'), (1222, 'Sag'), (1231, 'Cap')]
def get_zodiac_of_date(date):
    date_number = int("".join((str(date.date().month), '%02d' % date.date().day)))
    for z in zodiacs:
        if date_number <= z[0]:
            return z[1]