2017-01-24 1 views
0

bin()を使用せずに整数をバイナリに変換するプログラムを作成しました。ただし、実行すると、この関数は先行ゼロを追加します。整数をバイナリに変換し、先行ゼロを削除する必要があります

def decimalToBinary(n): 
    def helper(n): 
     if n == 0: 
      return '0' 
     else: 
      if n%2 == 1: 
       binaryDigit = '1' 
      else: 
       binaryDigit = '0' 
      return helper(n//2) + binaryDigit 

    helper(n) 
    print(helper(n)) 

出力:100が入力されると、出力はむしろ01100100より、1100100なるよう

>>> decimalToBinary(100) 
01100100 

どのように私はこれを変更することができますか?私は遠く離れた銀河で昔、どこかで見つけ

+0

を返すために、余分なifを使用する必要がありますので、あなたがあれば、n個の== 0 'に空の文字列を使用していた「ゼロをリードする」

のみ0ニーズ: '復帰「」と'0'は先行ゼロを必要とする値だけなので、誰かが' decimalToBinary(0) 'をいつ実行するかを認識するための' 'if '。 – furas

答えて

-2

何か:

n = 100 
b = '' 
while n > 0: 
    b = str(n % 2) + b 
    n >>= 1 
print(b) # 1100100 
0

私の提案は、ヘルパー(n)がない限り、

print(str(helper(n)).lstrip("0")) 

または

print(str(helper(n))[1:]) 

だろうすでにストリングを返します。この例では、例ではstr()を削除しています。

+1

あなたの最初の提案は私のために働いた、ありがとう – stephenjdp

+0

それは 'decimalToBinary(0)'の空の文字列を与える: – furas

0

トリム機能を使用してください。

trimStart("0") // example from C# 

これは原始的な方法であるが、このゼロをスキップするif n == 0: return ""にしてください:)

+0

'decimalToBinary(0)'の結果を空の文字列にトリミングする。 – furas

0

使用、空の文字列のために動作します:

私はpythonで、あなたがこれに似た何かを見つけると確信しています。あなたはこの値を認識し、0

def decimalToBinary(n): 

    def helper(n): 
     if n == 0: 
      return '' # <- empty string 
     else: 
      if n%2 == 1: 
       binaryDigit = '1' 
      else: 
       binaryDigit = '0' 
      return helper(n//2) + binaryDigit 

    if n == 0: 
     result = '0' # <- "leading zero" only for `n == 0` 
    else: 
     result = helper(n) 
    print(result) 

# --- test --- 

for x in range(16): 
    decimalToBinary(x) 
関連する問題