2012-03-13 7 views
1

整数から2進数への変換を間違って計算しています。私は整数6を入力し、2進数0を得ました。これは間違っています。みんな助けてくれますか?私は途中でPython 3を使用しています。整数から2進数への変換

def ConvertNtoBinary(n): 

    binaryStr = '' 
    if n < 0: 
     print('Value is a negative integer') 

    if n == 0: 
     print('Binary value of 0 is 0') 
    else: 
     if n > 0: 
      binaryStr = str(n % 2) + binaryStr 
      n = n > 1 
    return binaryStr 

def main(): 
    n = int(input('Enter a positive integer please: ')) 
    binaryNumber = ConvertNtoBinary(n) 
    print('n converted to a binary number is: ',binaryNumber) 

main() 
+0

私はこれを宿題として、またはあなた自身の楽しみ/運動のためにやっていると仮定しています。これは素晴らしいことです。うまくいくものが必要な場合は、ビルトイン関数 'bin()'を使います。 (あなたの目的に応じて、結果から先行する '0b'を取り除く必要があるかもしれません。) –

答えて

3

問題はここにある:

n = n > 1 

これはブール比較は "1 nよりも大きい?" ん。あなたが望むのはn >> 1です。これはビットシフトです。

EDIT:また、あなたは一度だけこのプロセスをやっている - 私はあなたには、いくつかの条件にそれをしたいだろうと想像、

while n > 0: 

EDIT2のように:コメントフォームジョン・マチンが正しいこと、およびIそれを反映するために上記を修正しました。

+0

私はそれを得たと思います。 6はバイナリ、110に変換されますか? –

+0

本当にそれは:(2^0)* 0 +(2^1)* 1 +(2^2)* 1 = 2 + 4 = 6 – mfrankli

+1

あなたは 'n >> 1'を意味します...' n >> 2 'は4で割る –

0

ビルドイン関数 "bin"はどうですか?

>>> bin(4711) 
'0b1001001100111' 

バッテリが付属しています!

0

これは何をしているのかによって異なりますが、これを行うためのPythonの機能はbin()です。 バイナリに変換する場合は、bin(numbertoconvert)を使用できます。 バイナリに変換する場合は、int(numbertoconvert, 2)を使用できます。 int()は、使用するベースのオプションの引数をとります。 bin()から通常のバイナリ番号を取得するには、

0

ここで問題はif n>0ですが、if文ではなくwhileループにする必要があります。

関連する問題