我已经制作了以下代码。这个想法是这个binStrToInt实际上将我的字符串识别为整数,并且可以将其转换为实际数字。 我的同事指出我的代码有一些错误。我注意到的只有那些 1.数学需要导入(对于int) 2.返回需要缩进 3. num = num + int(binary_Str [i])我不应该在那一行? 问题是:它不起作用。我不知道该怎么做
def binStrToInt(binary_str):
"""The function binStrToInt() takes in one input, a string of ones and
zeros (no spaces) called BINARY_STR. It treats that input as a binary
number (base 2) and converts it to a decimal integer (base 10). It
returns an integer result."""
length = len(binary_str)
num = 0
for i in range(length)
num = num + int(binary_Str[i])
num = num * 2
return num / 2
答案 0 :(得分:2)
删除所有拼写错误和缩进问题时,它可以正常工作:
def binStrToInt(binary_str):
"""The function binStrToInt() takes in one input, a string of ones and
zeros (no spaces) called BINARY_STR. It treats that input as a binary
number (base 2) and converts it to a decimal integer (base 10). It
returns an integer result."""
length = len(binary_str)
num = 0
for i in range(length):
num = num + int(binary_str[i])
num = num * 2
return num / 2
但老实说,你怎么没看到这些?解释器会告诉你大部分(除了返回缩进之外)。正如评论者提到的那样,如果你传递一个字符串,内置的int()
函数将执行相同的操作,而将数字2传递给二进制字符串。
编辑根据您在下面的评论,您会以某种方式使用特殊报价,可能是从网页或其他内容复制而来。这不会起作用 - 这是一个有效的例子和解释器中没有的东西:
>>> def binStrToInt(binary_str):
... length = len(binary_str)
... num = 0
... for i in range(length):
... num = num + int(binary_str[i])
... num = num * 2
... return num / 2
...
>>> binStrToInt('101')
5
>>> binStrToInt(’101’)
File "<stdin>", line 1
binStrToInt(’101’)
^
SyntaxError: invalid syntax
答案 1 :(得分:0)
如果您可以将代码重写为
,则可以使逻辑更易于理解。num = 0
for i in range(len(binary_str)):
num = num * 2
num = num + int(binary_str[i])
return num