2016-08-07 10 views
1

Python 2.6/2.7バイナリ値とその小数点以下の書式を設定するPython印刷

私は以下のプログラムを持っています。

print 0b10 

def p_m(x): 
    print x 

p_m(bin(2)) 

出力:私は(P_Mで印刷したい何

2 
0b10 

は)私が(P_Mし渡しているものです "0b10と" の2(小数点値)である)として、変数xでこの値を "0b10"にし、そのxを出力するだけです。

なぜ機能内のprint xがプログラムの最初の行のように機能しないのですか?私は()のprint文P_Mに何をすべき

はとして "0b10と" の値を印刷します。

+3

'0b10'は、印刷するためにint('0b10', 2)を印刷する必要があります。 'bin(2)'は '' 0b10''です。これは文字列です。それを印刷するには 'print int( '0b10'、2)' 2 –

+0

@ M.Klugerfordありがとう。 int()が基本値を2として渡すことができるかどうかをチェックしなかった。ありがとう。あなたが答えることができれば、私はそれに印をつけます。 BTWは、print int(x、10)を与えても機能しませんでした。なぜなら、0b10は基数10(小数)の有効な値ではないからです。 –

答えて

1

0b10はintです。 bin(2)は文字列である '0b10'です。 `0b10`は` int`です。

1

print 0b10は、すべての数字は、バイナリとしてPythonに格納されているので、これは2

を与えます。

bin(2)は文字列です。したがって、バイナリ値が得られます。

print int('0b10', 2)を使用できます。ここで2はベースを意味し、 '0b10'は変換したいバイナリです。 0b100b一部は必須ではありませんint()ので、すでにそれが2 Documentationをベースに、それを変換知っている、

を言うデフォルトのベースは、許可された値が0と2-36ある10です。コード中の整数リテラルと同様に、Base-2、-8、 および-16リテラルに0b/0B、0o/0O/0、または 0x/0Xの接頭辞を付けることもできます。

+0

これらの2行に違いはありませんか? 1:print int( "0b100"、2)、 2:print int( "100"、2)。 Int()first paramは文字列、2ndはbase(2)です。この場合、文字列の値は0b100と100が同じだと思っていますが、文字列として扱うと混乱します。 –

2

2 base parameterを使ってint型に文字列0b10バックを変換します

def p_m(x): 
    print int(x, 2) 
関連する問題