我的代码出了什么问题?我无法掌握这个概念

时间:2014-03-13 21:22:54

标签: python binary decimal converter

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

到目前为止,我想测试这段代码,它在第13行说:

  

TypeError:builtin_function_or_method&#39;对象没有属性   __getitem__

我不明白为什么会出错。

我想将十进制数转换为二进制数。我只想尝试获取输入的第一个值然后将其存储在列表中然后将其添加到另一个列表中作为0或1。如果输入不等于2,加零。我该怎么做?

2 个答案:

答案 0 :(得分:5)

binary1.append[decimal]

您试图从append方法获取元素,从而触发错误。由于它是一个函数或方法,您需要使用适当的语法来调用它。

binary1.append(decimal)

同上另一个追加电话。

答案 1 :(得分:0)

回答您的二进制问题。可以很容易地强行解决问题。这背后的想法是我们将取任何数字N然后将N减去2到最小功率将小于N.例如。

N = 80

2 ^ 6 = 64

在二进制中,这表示为1000000。

现在拿N - 2 ^ 6得到16。

在小于或等于N的情况下,找出可应用的最大功率。

2 ^ 4 = 16

在二进制文件中,现在表示为1010000。

对于实际代码。

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