2016-09-14 11 views
0

私はpython 3.5.2を使ってこのプログラムを作っています。それは10進数を取ってバイナリに変換するのに適しています。なぜ10進数のバイナリプログラムが値を後方に戻してテーブル形式で返すのですか?

number = int(input('Enter a number in base 10: ')) 
base2 = '' 
while(number > 0): 
    rem = number % 2 
    number = number // 2 
    base2 = srt(number) + str(rem) 
    print(rem) 
#This was to prevent the end text from sticking to the print 
input('\nEnter to end') 

これは正しい値を返しますが、後方と列には原因がわかりません。

答えて

0

いくつかの変更:

number = int(input('Enter a number in base 10: ')) 
base2 = '' 
while(number > 0): 
    rem = number % 2 
    number = number // 2 # can be number //= 2, or number >>= 1 
    base2 += str(rem) 
    #print(rem) # no need to print 
print(base2[::-1]) 

以上の単純な:

base2 = bin(number)[2:] 
0

あなたのコードは残りの数字の最下位ビットを別々の行に表示するので、逆の順序で表示されます。あなたは配列にビットを格納して、ループの後に逆の順序でそれらを印刷するようにコードを変更することができます:

number = int(input('Enter a number in base 10: ')) 
base2 = [] 
while(number > 0): 
    base2.append(str(number % 2)) 
    number = number // 2 

print(''.join(reversed(base2))) 

Pythonはまた、内蔵された方法binをあなたのための変換を行うことができるより:

>>> bin(10) 
'0b1010' 
をあなたのコードに
+0

私は 'bin(i)'を使用しますが、私はバイナリ電卓でこれを使用していますが、悲しいことにそれが必要な方法では動作しません。 – rocky

+0

@TylerSeward 'bin'が動作しない特別な理由はありますか? – niemmi

+0

私はこのプログラムで算術演算子を実行する必要がありましたが、その変数を取り出してbinにプラグインしましたが、値やエラーは返されませんでした。 – rocky

関連する問題