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()
答案 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()
希望现在能解决这个问题?可能需要在某些地方做一些工作,我会留给你。