<[EMAIL PROTECTED]> wrote > think), but since I'm new to this thing, I thought I'd do the safe > thing and > try a second time.
I personally didn't see the earlier one so can't say if it got here or not. But I'll throw in some comments below. But first I will say that you seem to be going out of your way to make easy things hard! > CODE: > def conversion(n): > b = '' > while n > 0: So this returns the empty string when n is negative. Is that really what you want? > r = n%2 > n = n/2 > r = str(r) > b = r+b > return b No real comments other than you might consider putting the code to pad with zeros in here. Then in the main code you only need to convert the leftmost bit to 1 if negative... In fact you could move that here too sonce arguably its part of conversion... > def signed_mag(): > n = int(raw_input("Please enter a signed integer: ")) > bits = int(raw_input("Please enter the number of bits: ")) > count = conversion(n).count("0") + conversion(n).count("1") \ count = len(conversion(n)) But recall from above that conversion(n) returns an empty string for negative numbers. Also to save calling conversion(n) multiple times you could introduce a new variable to store the result. > #count the amount of digits to know how many 0s to add > append_zeros = bits - count > if bits - 1 < count: > print "Out of range." > else: > if n < 0: > n = abs(n) Now you change n so that conversion(n) will now work on negative inputs... > if append_zeros > 0: > print -n," is encoded as","1"+(append_zeros-4)*"0" \ > +conversion(n),"in Signed Magnitude." This confused me, why are you subtracting 4? Surely you just want to change a single bit? > elif n > 0: > if append_zeros > 0: > print n,"is encoded as","0" + (append_zeros-1)*"0" \ > +conversion(n),"in Signed Magnitude." And why subtract 1 then add a "0"? Why not just append_zeros*"0" > else: > print "That is not an valid signed interger." Why is zero not a valid signed integer? > I know the problem is at the '(append_zeros-4)' bit, but I'm not > sure what > to change/add. Thanks in advance. I think a problem may also be in the fact that the first call to conversion(n) returns "" whereas subsequent calls return a bit pattern. In general it would be better to get your conversion function to handle all of the bit generation , padding and signing of the number. That only leaves the presentation logic outside in signed_mag() HTH, -- Alan Gauld Author of the Learn to Program web site http://www.freenetpages.co.uk/hp/alan.gauld _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor