Hi,
Not sure if this is necessary, as I sent another email to the list (I
think), but since I'm new to this thing, I thought I'd do the safe thing and
try a second time.
The code almost works now. Although, as soon as the converter gets a number
-8 or lower, it adds a 0 that is not necessary.
CODE:
def conversion(n):
b = ''
while n > 0:
r = n%2
n = n/2
r = str(r)
b = r+b
return b
def signed_mag():
print ""
print "--------------------"
print "Signed Binary"
print "--------------------"
print ""
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 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)
if append_zeros > 0:
print -n," is encoded as","1"+(append_zeros-4)*"0" \
+conversion(n),"in Signed Magnitude."
elif n > 0:
if append_zeros > 0:
print n,"is encoded as","0" + (append_zeros-1)*"0" \
+conversion(n),"in Signed Magnitude."
else:
print "That is not an valid signed interger."
I know the problem is at the '(append_zeros-4)' bit, but I'm not sure what
to change/add. Thanks in advance.
Cheers,
Devon
On Wed, 17 Oct 2007 17:02:56 -0400 [EMAIL PROTECTED] wrote:
> You can only count one at a time.
>
> count = conversion(n).count("0") + conversion(n).count("1")
>
> count is a string method, so it operates directly on the string - you
> don't have to call it like you did.
>
> import string
> string.count(mystr, "cheese")
>
> is the same as
>
> mystr.count("cheese")
>
> At least it is in newer versions of python.
>
> Let me know if that helped.
>
> Cheers,
> Ben
>
> On 10/17/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> > I am having trouble getting the string.count function to work. I
> want it to
> > count the amount of digits (0 or 1) in the string, but I keep getting an
> > error stating the string.count was expecting a character buffer object.
> > CODE:
> > count = string.count(conversion(n),["0","1"])
> >
> > ERROR:
> > Traceback (most recent call last):
> > File "/Users/<name>/Desktop/Project 1.py", line 59, in -toplevel-
> > signed_mag()
> > File "/Users/<name>/Desktop/Project 1.py", line 29, in signed_mag
> > count = string.count(conversion(n),["0","1"])
> > File
> >
> "/Library/Frameworks/Python.framework/Versions/2.4//lib/python2.4/strin
> g.py"
> > , line 348, in count
> > return s.count(*args)
> > TypeError: expected a character buffer object
> >
> > I'm trying to make a decimal to binary converter that has the option to
> > select the amount of bits for Signed Binary. I've thought of a way (not
> > tested yet) on how to implement the bits, but I first need to count the
> > amount of digits in the original conversion. Thanks in advance.
> > _______________________________________________
> > Tutor maillist - [email protected]
> > http://mail.python.org/mailman/listinfo/tutor
> >
>
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor