Python程序:将二进制数转换为十进制数,十进制数转换为二进制数的工具,以及一个简单的纯文本菜单,用于添加或减去数字

时间:2017-11-18 04:41:53

标签: python

Python程序:将二进制数转换为十进制数,十进制数转换为二进制数的工具,以及一个简单的纯文本菜单,用于添加或减去数字。

对于创作者,您可以调整代码,使其看起来像编辑器中的代码吗?我看不懂这个。

 import sys

二进制到十进制

def bintodec(binnum):
     l = len(binnum)
     s = binnum
     dec = 0
     for i in range(0,l):
         b = s[l-i-1]
         dec = dec + int(b)*(2**i)
         return dec

十进制到二进制

 def dectobin(decnum):
     if decnum==0:
         return "00000000"
     bin=""
     while decnum>0:
         bin = str(decnum%2) + bin
         decnum = decnum/2

     if len(bin)%8 != 0:
         n = 8*(len(bin)/8 + 1) - len(bin)
         bin = "0" + bin
         return bin

 def show_menu():
     print ("What do you want to do?")
     print ("1. Enter the first number")
     print ("2. Enter the second number")
     print ("3. Add the two numbers together")
     print ("4. Subtract the second number from the first")
     print ("5. Exit the program\n")
     show_menu()
      inp = input() 
      n1 = "" 
      n2 = "" 
      while inp !=5:
     if inp=="1":
         n1 = str(input("Enter the first number\n"))
         print ("The first number chosen is: " + str(n1) + "\n")
         show_menu()
     if inp=="2":
         n2= str(input("Enter the second number\n"))
         print ("The first number chosen is: " + str(n1))
         print ("The second number chosen is: " + str(n2) +"\n")
         show_menu()
     if inp=="3":
         print ("The sum of the two numbers is: " + dectobin(bintodec(n1) + bintodec(n2)) + "\n")
     exit()
     if inp=="4":
         if bintodec(n2)<bintodec(n1):
             print ("For this selection second number should be greater than or equal to first")
         else:
             print ("The difference beween the two numbers is: " + dectobin(bintodec(n2) - bintodec(n1)) + "\n")
         exit()
     inp = input()

2 个答案:

答案 0 :(得分:0)

对于你想要做的事情感到非常困惑,这就是我能想到的:

# Binary To Decimal
def bintodec(binnum):
    return int(str(binnum), 2)

#Decimal To Binary   
def dectobin(x):
    return int(bin(x)[2:])

def ask_for_numbers():
    number_list = 0
    while True:
        ask_for_operand = input('Would you like to add or sub')
        ask_for_number = input('Please enter a number: ')
        try:
            if ask_for_operand == 'add':
                try:
                    number_list += bintodec(ask_for_number)
                except:
                    number_list += int(ask_for_number)
                print(number_list)
            elif ask_for_operand == 'sub':
                try:
                    number_list -= bintodec(ask_for_number)
                except:
                    number_list -= int(ask_for_number)
                print(number_list)
            else:
                return number_list
        except ValueError:
            print("Not Int or Bin")

def main():
    print(ask_for_numbers())

if __name__ == '__main__':
    main()

显然我不得不重新开始,不需要十进制到二进制功能。这样做的问题是,如果我想添加小数“10”,函数ask_for_numbers()将希望将其转换为二进制值。也许你可以编辑这段代码来搞清楚。

我希望这会有所帮助:)

答案 1 :(得分:0)

嗯,你去了:P决定使用一个开关对象,因为它很有趣。但是我发现使用输入&#39; <&#39;

退出交换机很困难
class switch(object):
    value = None
    def __new__(class_, value):
        class_.value = value
        return True

def case(*args):
    return any((arg == switch.value for arg in args))

def bintodec(binnum):
    return int(str(binnum), 2)

def add(first, second):
    try:
        first = int(first,2)
        second = int(second,2)
    except:
        pass
    print('result')
    print(int(first) + int(second))
    print('')

def sub(first, second):
    try:
        first = int(first,2)
        second = int(second,2)
    except:
        pass    
    print('result')
    print(int(second) - int(first))
    print('')


def show_menu():

    while True:
        print ("What do you want to do?")
        print ("1. Enter the first number")
        print ("2. Enter the second number")
        print ("3. Add the two numbers together")
        print ("4. Subtract the second number from the first")
        print ("5. Exit the program\n")            
        ask_for_input = input('Enter Switch\n')
        ask_for_input = int(ask_for_input)

        while switch(ask_for_input):
            if case(1):
                ask_for_1_num = input("Enter the first number\n")
                break
            if case(2):
                ask_for_2_num = input("Enter the second number\n")
                break
            if case(3):
                add(ask_for_1_num, ask_for_2_num)
                break
            if case(4):
                sub(ask_for_1_num, ask_for_2_num)
                break
            if case(5):
                break
            break    

def main():
    show_menu()

if __name__ == '__main__':
    main()        

希望现在能解决这个问题?可能需要在某些地方做一些工作,我会留给你。