【问题标题】:What is wrong with my code? I cannot grasp the concept of我的代码有什么问题?我无法理解的概念
【发布时间】:2014-04-18 22:20:04
【问题描述】:
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' 对象没有属性 __getitem__.

我不明白为什么会出错。

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

【问题讨论】:

    标签: python binary decimal converter


    【解决方案1】:
    binary1.append[decimal]
    

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

    binary1.append(decimal)
    

    另一个附加调用同上。

    【讨论】:

    • 它确实奏效了!如果我这样做是为了将每个结果减去 2,有没有更快的方法,比如 2 或 3 行?我听说过 **2 但不确定,请解释一下!
    • (number)**2 表示取数字的 2 次方。由于您使用的是二进制,因此您需要取 2^(数字),因此您需要使用 2 ** (number)。在这种情况下,您可以找到最大的数字 2^x 可以等于您的输入,然后减去并重复该过程。 @纳撒尼尔
    • @nwalsh,对不起?我不确定,你能给我举个例子吗?
    • @Nathaniel 会给出答案。
    • @nwalsh 谢谢。您能否也使用#This is to.. 来解释每个步骤。非常感谢!
    【解决方案2】:

    回应您的二元问题。可以很容易地暴力破解您的解决方案。这背后的想法是,我们将取任意数 N,然后将 N 减去 2 以得到小于 N 的最大幂。例如。

    N = 80

    2^6 = 64

    二进制表示为 1000000。

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

    求2小于等于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
    

    【讨论】:

    • 我想你误解了....我想使用除以 2 并存储 1 和 0 来制作二进制到十进制转换器...
    • @Nathaniel 哎呀。好的,我稍后会回答这个问题。
    • @Nathaniel 哪里说你想要二进制到十进制?存储 1 和 0 可以将十进制转换为二进制,这是您在原始帖子中尝试做的事情
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 2011-04-29
    相关资源
    最近更新 更多