我试图编写一个简单的函数,该函数的输入为字符串格式的二进制数,并将二进制转换为十进制。但是在输出中,我总是得到错误的信息:不管输入是什么,第3行中的“ res”值(“ 1010”,“ 10010111010”等)。另外,我尝试调试代码,并且该功能甚至没有启动循环,就好像它不在那里一样。。。所以,我只是看不到我的错误
def bin_to_dec(bin):
bin = bin[::-1]
res = 0
for i in range(len(bin)):
if bin[i] == 0:
res += 2**i
return res
答案 0 :(得分:2)
您正在将字符串"0"
与数字0进行比较,它们通常是不相等的。
因此,与您所说的相反,循环实际上是循环的;但是if
语句永远不会正确。
当然,您也应该在数字为1时添加,而不是在0时添加。
def bin_to_dec(bin):
bin = bin[::-1]
res = 0
for i in range(len(bin)):
if int(bin[i]) == 1:
res += 2**i
return res
请注意添加了int()
。
答案 1 :(得分:1)
if bin[i] == '1'
这将解决问题。 bin[i]
是一个字符,您正在将其与一个始终会导致错误的数字进行比较。
答案 2 :(得分:0)
您可以只使用内置的int函数:
def binaryToDecimal(n):
return int(n,2)