At 05:17 PM 2/21/2007, Terry Carroll wrote: >On Tue, 20 Feb 2007, Dick Moores wrote: > > > I was surprised to be unable to find a function in Python for > > converting ints from base10 to base2. Is there one? > > > > I wrote one, but have I reinvented the wheel again? (Even if I have, > > it was an interesting exercise for me.) > >I like the approach of mapping hex or octal digits posted by Alan and Bob, >but, not thinking of that, this would be my straightforward approach: > >def computeBin(n): > """converts base10 integer n to base2 b as string""" > if n == 0: return '0' > sign = ['','-'][n<0] > num = abs(n) > seq = [] > while (num != 0): > (num, bit) = divmod(num, 2) > seq.append(str(bit)) > seq.append(sign) > return ''.join(reversed(seq)) > >if __name__ == "__main__": > x = 1234567890 > assert x == int(computeBin(x),2) > x = -1234567890 > assert x == int(computeBin(x),2)
Thanks! But there's syntax(?) there I've never seen before. "['','-'][n<0]". I see it works: >>> n = -6 >>> ['','-'][n<0] '-' >>> n = 98 >>> ['','-'][n<0] '' What's this called? I'd like to look it up. Dick _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor