繁体   English   中英

检查是否为二进制并转换为十进制

[英]check if binary and convert to decimal

我对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)

您的函数是正确的,但是您正在计算十进制数,而不检查数字是否为二进制。 如果数字为二进制,则仅转换为十进制。

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

is_binary = b_to_d(str(my_binary))

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

HariUserX解释您的代码中的错误。 虽然,我会作为一个补充说明,您的代码可以大大缩短。

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

上面使用了“请求宽恕而不是允许”的原则。 尝试将数字转换为二进制并检查是否失败,这种方法在本质上更好地构建了Python。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM