2進入力を10進整数に変換する必要があります。 10進数から2進数に移行する方法を知っています。
n = int(raw_input('enter a number: '))
print '{0:b}'.format(n)
私は逆方向に行く必要があります。私の教授は、私たちのコードをチェックするとき、11001
を入力するので、25
を取り戻す必要があると言いました。メモを確認しましたが、その方法がわかりません。グーグルや他のインターネットリソースもあまり役に立たなかった。
最大の問題は、組み込み関数の使用が許可されていないことです。使用が許可されていない理由は理解できますが、Pythonには2進化10進数の関数が組み込まれているため、この問題がはるかに困難になっています。
int
を使用して、ベースを2
(バイナリの場合)に設定できます。
>>> binary = raw_input('enter a number: ')
enter a number: 11001
>>> int(binary, 2)
25
>>>
ただし、そのようにint
を使用できない場合は、いつでも次のように実行できます。
binary = raw_input('enter a number: ')
decimal = 0
for digit in binary:
decimal = decimal*2 + int(digit)
print decimal
以下はデモンストレーションです:
>>> binary = raw_input('enter a number: ')
enter a number: 11001
>>> decimal = 0
>>> for digit in binary:
... decimal = decimal*2 + int(digit)
...
>>> print decimal
25
>>>
int
なしで実行したい/必要な場合:
_sum(int(c) * (2 ** i) for i, c in enumerate(s[::-1]))
_
これにより、文字列(_s[::-1]
_)が逆になり、各文字c
とそのインデックスi
(_for i, c in enumerate(
_)が取得され、文字の整数(int(c)
)インデックスの2乗(_2 ** i
_)で、それらをすべて合計します(sum()
)。
a = input('Enter a binary number : ')
ar = [int(i) for i in a]
ar = ar[::-1]
res = []
for i in range(len(ar)):
res.append(ar[i]*(2**i))
sum_res = sum(res)
print('Decimal Number is : ',sum_res)
これは完全なことです
binary = input('enter a number: ')
decimal = 0
for digit in binary:
decimal= decimal*2 + int(digit)
print (decimal)
私はずっと前にこの問題に取り組み始め、独自の2進化10進変換関数を書き込もうとしました。 10進数を2進数に変換する方法は実際にはわかりません!私は今日それを再訪してそれを理解しました、そしてこれは私が思いついたものです。これがあなたに必要なものかどうかはわかりませんが、ここにあります:
def __degree(number):
power = 1
while number % (10**power) != number:
power += 1
return power
def __getDigits(number):
digits = []
degree = __degree(number)
for x in range(0, degree):
digits.append(int(((number % (10**(degree-x))) - (number % (10**(degree-x-1)))) / (10**(degree-x-1))))
return digits
def binaryToDecimal(number):
list = __getDigits(number)
decimalValue = 0
for x in range(0, len(list)):
if (list[x] is 1):
decimalValue += 2**(len(list) - x - 1)
return decimalValue
繰り返しになりますが、私はまだPythonだけで、これが役立つことを願っています。最初の関数は桁数を決定し、2番目の関数は実際に桁数を計算してリストに返します。 、そして3番目の関数は実際に呼び出す必要がある唯一の関数であり、10進値を計算します。先生が実際に独自のコンバーターを作成することを望んでいた場合、これは機能します。すべての数値でテストしたわけではありませんが、完璧に動作するために!あなたは私のためにバグを見つけると確信しています!とにかく、私はそれを次のように呼びました:
binaryNum = int(input("Enter a binary number: "))
print(binaryToDecimal(binaryNum))
これにより、正しい結果が出力されます。乾杯!
入力は文字列または整数です。
num = 1000 #or num = '1000'
sum(map(lambda x: x[1]*(2**x[0]), enumerate(map(int, str(num))[::-1])))
# 8
このソリューションを試してください:
def binary_int_to_decimal(binary):
n = 0
for d in binary:
n = n * 2 + d
return n