Nathaniel
Nathaniel

Reputation: 13

What is wrong with my code? I cannot grasp the concept of

decimal = input("Please insert a number: ")


if decimal > 256:

print "Value too big!"


elif decimal < 1:
    print "Value too small!"

else:
    decimal % 2

binary1 = []
binary0 = []
if decimal % 2 == 0:
    binary1.append[decimal]

else:
    binary0.append[decimal]
print binary1
print binary0

So Far, I want to test this code, it says on line 13:

TypeError: builtin_function_or_method' object has no attribute __getitem__.

I don't understand why it is wrong.

I would like to convert the decimal number into binary. I only wanted to try and get the first value of the input then store it in a list to use then add it to another list as either a 0, or a 1. And if the input doesn't divide by 2 equally, add a zero. How would I do this?

Upvotes: 0

Views: 96

Answers (2)

nwalsh
nwalsh

Reputation: 471

In response to your binary question. It is possible to brute-force your way to a solution quite easily. The thinking behind this is we will take any number N and then subtract N by 2 to the biggest power that will be less than N. For instance.

N = 80

2^6 = 64

In binary this is represented as 1000000.

Now take N - 2^6 to get 16.

Find the biggest power 2 can be applied to while being less than or equal to N.

2^4 = 16

In binary this now represented as 1010000.

For the actual code.

bList = []
n = int(raw_input("Enter a number"))
for i in range(n, 0, -1): # we will start at the number, could be better but I am lazy, obviously 2^n will be greater than N
    if 2**i <= n: # we see if 2^i will be less than or equal to N
        bList.append(int( "1" + "0" * i) ) # this transfers the number into decimal
        n -= 2**i # subtract the input from what we got to find the next binary number
        print 2**i 
print sum(bList) # sum the binary together to get final binary answer

Upvotes: 0

metatoaster
metatoaster

Reputation: 18908

binary1.append[decimal]

You tried to get an element from the append method, hence triggering the error. Since it's a function or method, you need to use the appropriate syntax to invoke it.

binary1.append(decimal)

Ditto for the other append call.

Upvotes: 5

Related Questions