我对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)
答案 0 :(得分:1)
您的函数是正确的,但是您正在计算十进制数,而不检查数字是否为二进制。仅当数字为二进制时才转换为十进制。
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)
答案 1 :(得分:1)
HariUserX解释了代码中的错误。虽然,我要补充一点,您的代码可以大大缩短。
my_binary = input("Enter binary number: ")
try:
decimal = int(my_binary, 2)
except ValueError:
print('Number is not binary!')
以上内容使用"ask forgiveness not permission"原则。尝试将数字转换为二进制并检查是否失败,这种方法使Python具有更好的固有性能。