有没有办法让这个代码更有效,更小?

时间:2017-12-23 16:59:58

标签: python performance binary decimal

我刚刚编写了这个代码,用于将十进制转换为二进制,使用除以2的方法。它工作得很好,但我只是想知道是否有办法让它更有效,更容易阅读。

def binary(d):
    stop = False
    c = []

    while stop == False:
        b = d%2
        if b == 0:
            d = d/2
        else:
            d = d/2
            b = 1
        c.append(b)

        if d == 1:
            c.append(1)
            stop = True

    c.reverse()
    c="".join(map(str,c))
    return(c)

d = int(input("enter number:"))
print(binary(d))

(我刚开始学习python)

2 个答案:

答案 0 :(得分:0)

您应该使用bin()format()

num = 42

print bin(num)
# 0b101010
print "{0:#b}".format(num)
# 0b101010
print "{0:b}".format(num)
# 101010

答案 1 :(得分:0)

您可以使用这种简单的方法。

x=10
bin(x)

它将为您提供数字10的二进制形式。 它将返回' 0b1010',非常简单。 尝试一下,如果您遇到任何问题,只需回复即可。享受:)

如您所愿,我优化了代码,通过在代码中保持逻辑完整来使用一些快捷方式。

def binary(decimal):
    temp = []
    while True:
        binary_num = 0 if decimal % 2 == 0 else 1
        decimal = int(decimal / 2)
        temp.append(binary_num)
        if int(decimal) == 1:
            temp.append(1)
            break
    return "".join(map(str, temp.reverse()))


DECIMAL = int(input("enter number:"))
print(binary(DECIMAL))