Python(2進数→10進数変換)
def valid(bits):
n = len(bits)
if n==0:
return False
elif bits.count("0")+bits.count("1") != n:
return False
else:
return True
def test_exec():
bits = input("\nPlease input Binary number:")
if bits.lower() == "exit":
return False
elif not valid(bits):
print("Not available number:",bits)
return False
print("Decimal number:",convert(bits))
return True
def convert(bs):
n_decimal=0
for i,x in enumerate(reversed(bs)):
n_decimal += int(x)*2**i
print("Debug","i:",i,"x:",x,"result:",n_decimal)
return n_decimal
def test():
while test_exec():
pass
print("end")
test()
入力値が0か1かを判定する場合、下記のような方法が一般的ですが、文字数を取ってきて判断する方法の方がスマートですね。
for x in bits:
if x != "0" and x != "1":
return False
また、enumerate(シーケンス)というイテレーターとforループでタプルを利用する方法とか、スマートな書き方があることに目からうろこの状態でした。
便利な”文字列”.upper()や ”文字列”.lower()のようなメソッドやlen(シーケンス),abs(整数),max( 整数 , 整数 ) ,min( 整数 , 整数 ) のような組み込み関数を使いこなしていこう!