Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环的二进制到十进制_Python_Python 3.x_Bin - Fatal编程技术网

Python 循环的二进制到十进制

Python 循环的二进制到十进制,python,python-3.x,bin,Python,Python 3.x,Bin,嗨,我是一个新的程序员,我试图完成我的一个任务,这需要我把一个二进制数转换成一个二元数。我没有得到任何错误,但我没有得到正确的等值第纳尔,请帮助。这就是我到目前为止所做的 binary = "10111" denary = 0 length=len(binary) for i in range(length-1,-1,-1): if binary[i] == "1": denary += (2**i) else: denary += 0 print(denary) 输出为

嗨,我是一个新的程序员,我试图完成我的一个任务,这需要我把一个二进制数转换成一个二元数。我没有得到任何错误,但我没有得到正确的等值第纳尔,请帮助。这就是我到目前为止所做的

binary = "10111"
denary = 0
length=len(binary)
for i in range(length-1,-1,-1):
   if binary[i] == "1":
    denary += (2**i)
else:
    denary += 0
print(denary)
输出为:

29

你走错方向了。您可以使用
二进制[:-1]
反转(二进制)
反转数组

binary = "10111"
denary = 0

for i, d in enumerate(reversed(binary)):
    if d == "1":
        denary += (2**i)

print(denary)

还请注意,您可以执行以下操作:

denary = int(binary, 2)  # Parses string on base 2 to integer base 10

print(denary)

您可以使用这样的反向列表:

binary = "10111" # needs to be reversed so the lowest bit is in front for ease of computing
denary = 0

# ind = index,  bit = the bitvalue as string of the reversed string 
for ind, bit in enumerate(binary[::-1]): # reversed copy of string
    denary += int(bit)*2**ind  # if bit is 0 this evaluates to 0, else to the  power of 2
print(denary)

问题是,
i
将以相反的顺序对应十进制数字……我想您的作业不允许您使用
int(binary,2)
?@dan04是的,我们被告知不要使用that@usr2564301不,我只是在Python3中需要它,很抱歉为Python2.7添加了漂亮而简单的标签,尽管
enumerate(反向(二进制))
在我看来更具可读性。(看起来也快了20%左右。)@NathanVērzemnieks谢谢你的提示。我将把它包括在我的回答中:)