2016-03-03 84 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) 
相關問題