你如何创建二进制十进制转换程序? (提供格式)

时间:2013-05-02 18:43:37

标签: python binary decimal

我被意外地放在编程课而不是介绍中。到电脑。一切都完全超出我的想象。有谁知道怎么做?

我需要在Python中编写十进制二进制数转换程序(十进制数到二进制,反之亦然)。程序的输入是数字和基数。基数只能是2或10.如果基数是2,则输入是二进制数,输出将是相应的十进制数,反之亦然。

程序将首先要求用户输入基数,然后输入该基数中的数字。基数只能是“B”,“D”或S.“B”,“D”表示输入分别是二进制数或十进制数,“S”代表“停止”。您需要检查输入的验证。

输出格式:

您的输出应如下所示:

Please input the base(B:binary, d:deciam, S:Stop)
B
please input a number
1101
13
please input the base(b:binary, D:deciam, S:Stop)
D
Please input a number
13
1101
Please input the base(B:binary, D:deciam, S:Stop)
A
Your input in not a valid base
Please input the base(B:binary, D:deciam, S:Stop)
B
Please input is not a valid binary number
Please input the base(B:binary, D:deciam, S:Stop)
S

3 个答案:

答案 0 :(得分:4)

dec to bin:

s = bin(n)[2:]

bin to dec:

n = int(s, 2)

答案 1 :(得分:1)

二进制到十进制的函数:

>>>def binary_to_decimal(binary):
       decimal=0
       for i in range(len(str(binary))):
           power=len(str(binary))-(i+1)
           decimal+=int(str(binary)[i])*(2**power)
       return decimal

十进制到二进制的函数: -

>>>def decimal_to_binary(arr,decimal):
       if decimal ==1:
           arr.append(1)
       else:
           rem = decimal%2
           arr.append(rem)
           rev = decimal/2
           decimal_to_binary(arr,rev)
       string=""
       for i in arr[::-1]:
           string+=str(i)
       return string

主要功能: -

>>>def function(changetype,number):
       if changetype =="D2B":
           result = decimal_to_binary([],number)
       if changetype=="B2D":
           result=binary_to_decimal(number)
       if changetype=="S":
           result="stop"
       return result

输出:-----

>>>function("D2B",18)
'10010'

>>>function("B2D",10011)
19

>>>function("S",any_parameter)
'stop'


-------------------Thanks------------------------------------

答案 2 :(得分:0)

这应该是一个功能齐全的程序,可以完成你想要的大部分工作。随意改变它。

#!/usr/bin/env python3

def main():
    while True:
        base = input('Please input the base (B:inary, D:ecimal, S:top)\n')
        if base in {'B', 'b'}:
            convert = lambda b: str(int(b, 2))
        elif base in {'D', 'd'}:
            convert = lambda d: bin(int(d))[2:]
        elif base in {'S', 's'}:
            break
        else:
            print('Your input is not a valid base')
            continue
        number = input('Please input a number\n')
        try:
            print(convert(number))
        except ValueError:
            print('Your input is not a valid number')

if __name__ == '__main__':
    main()