0

我不小心被安排上了编程课而不是介绍课。到电脑。一切都在我的脑海中。有谁知道如何做到这一点?

我需要在 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
4

3 回答 3

4

dec到bin:

s = bin(n)[2:]

bin 到 dec:

n = int(s, 2)
于 2013-05-02T18:50:41.187 回答
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------------------------------------
于 2013-05-02T20:15:16.417 回答
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()
于 2013-05-02T21:11:00.540 回答