我想添加2个二进制数,但是我的程序无法正常工作。请查看我的代码并告知我任何错误。谢谢。 这是代码:
import time
n=0
while n!=1:
error1=True
while error1:
try:
bin2dec = raw_input("Please enter a binary number: ")
bin2dec2 = raw_input("Please enter a binary number: ")
error1=False
except NameError:
print"Enter a Binary number. Please try again.\n"
time.sleep(0.5)
except SyntaxError:
print"Enter a Binary number. Please try again.\n"
time.sleep(0.5)
decnum=0
for i in bin2dec:
decnum = decnum * 2 + int(i)
decnum2=0
for i in bin2dec2:
decnum2 = decnum2 * 2 + int(i)
dectotal=decnum+decnum2
b = ''
b = str(dectotal % 2) + b
dectotal >>= 1
print b,
print"<<This is your answer"
答案 0 :(得分:1)
以下代码应该非常适合您的要求,而且要短得多:
print (lambda x,y: bin(int(x,2)+int(y,2))[2:])(raw_input(),raw_input())
以下情况会更好:
a="Enter Number";ri=raw_input;print "Sum: "+(lambda x,y: bin(int(x,2)+int(y,2))[2:])(ri(a+' 1: '),ri(a+' 2: '))
由于您无法使用bin或dec,请尝试以下操作。它不使用bin,也不使用dec。它也不使用变量赋值,def语句,多个语句或int。实际上,它甚至不使用数字本身的内置加法,乘法或除法:
print "Sum: "+(lambda q: "".join(reversed([ (lambda n: n[0+(None!=q.__setitem__(0,n[1]))])
((lambda x,y,z: (lambda v: (str(v%2),str(v/2)))
((ord(x)-48)+(ord(y)-48)+(ord(z)-48)))(x,y,q[0]))
for x,y in reversed(zip(raw_input("Enter Number 1: ").zfill(16),
raw_input("Enter Number 2: ").zfill(16)))])))(['0'])
请注意,虽然这有效,但我鼓励您对其进行检查,如果您将其作为考试答案提交,我对由于愤怒的审查员对您造成的任何损失或伤害不承担任何责任。