首页 > 解决方案 > 检查是否为二进制并转换为十进制

问题描述

我对 Python 和一般编码非常陌生。对于我的学校作业,我必须创建一个从二进制转换为十进制的程序,但首先我还需要检查输入是否为二进制。基本上 - 我有单独的代码来检查输入是否正确以及另一个可以转换的代码。关于如何将这两者结合起来的任何建议?这是我的第一个任务,我真的被卡住了。请注意,我不允许使用任何内置函数。感谢任何关于我在这里犯什么错误的建议?

my_binary = input("Enter binary number: ")
decimal = 0
index = 0
exponent = len(my_binary) - 1

def b_to_d(my_binary):
    for character in my_binary:
        if character != '0' and character != '1':
            print ('Number is not binary!')
            return False
    print ('Number is binary')
    return True
b_to_d(str(my_binary))

while True and index != len(my_binary):
    decimal += int(my_binary[index]) * 2**exponent
    index += 1
    exponent -= 1
print(decimal)

标签: pythonpython-3.x

解决方案


HariUserX解释了代码中的错误。虽然,我想补充一点,您的代码可以大大缩短。

my_binary = input("Enter binary number: ")
try:
    decimal = int(my_binary, 2)
except ValueError:
    print('Number is not binary!')

以上使用了“请求原谅而不是许可”的原则。尝试将数字转换为二进制并检查它是否失败,使用这种方法构建 Python 天生就更好。


推荐阅读