2016-03-03 39 views
0

对于作业,我们被要求创建一个函数,该函数采用二进制输入,将值递增1,然后显示新数字的二进制值。输出值必须是8位字符串(8个字符长)。添加前导0直到长度为8个字符为止

以下代码返回正确的值,但我不知道如何将前导零添加到该值。

def numToBinary(n): 
    if n == 0: 
     return '' 
    elif isOdd(n): 
     return numToBinary(n // 2) + '1' 
    else: 
     return numToBinary(n // 2) + '0' 

def binaryToNum(s): 
    if s == '': 
     return 0 
    elif int(s[0]) == 0: 
     return 0 + binaryToNum(s[1:]) 
    elif int(s[0]) == 1: 
     return 2**(len(s) - 1) + binaryToNum(s[1:]) 

def increment(s): 
    binToNum = binaryToNum(s) + 1 
    numToBin = numToBinary(binToNum) 
    return numToBin 

给出解决这个问题就是个暗示:“()考虑你怎样才能使用 功能LEN和字符串乘法*,以确保输出有足够的前导零”

请问有人能指点我正确的方向吗?谢谢!

注:一个例子输出应该是:

>>> increment('00000001') 
'00000010' 
+1

'string.zfill(8)'将投入足够的零在'string'的开始,使之8个字符。 – zondo

+0

@zondo将其发布为答案 – Barmar

+0

@Barmar:好的。完成。 – zondo

回答

1

计算你需要多少个零。然后把它们预先加到value

value = '01' 
needed = 8 - len(value) 
value = '0' * needed + value 

您还可以使用zfill()

value = value.zfill(8) 
相关问题