[英]Adding binary numbers Python
我正在嘗試使用簡單的代碼在python中添加兩個二進制數。 有人可以告訴我為什么這不起作用? 非常感謝! 我嘗試打破代碼,但是當我將其分解時,它們都會分開工作。 但當然,當我把它放在一起時,它不起作用。
我是Python的初學者,所以解釋肯定會受到贊賞。 謝謝您的幫助!
#Enter numbers and define variables
number1=input("Enter 1st Binary Number:")
number2=input("Enter 2nd Binary Number:")
x1 = number1[0]
x2 = number1[1]
y1 = number2[0]
y2 = number2[1]
#Convert to integers from strings
int(x1)
int(x2)
int(y1)
int(y2)
#Digit 1 of answer and digit to be carried
if x1+y1==0:
a1 = 0
c1 = 0
if x1+y1==1:
a1 = 1
c1 = 0
if x1+y1==2:
a1 = 0
c1 = 1
#Digit 2 of answer and digit to be carried
if x2+y2+c1==0:
a2=0
c2=0
if x2+y2+c1==1:
a2=1
c2=0
if x2+y2+c1==2:
a2=0
c2=1
if x2+y2+c1==3:
a2=1
c2=1
#Digit 3 of answer
c2=a3
if a3==1:
print ("a3" + "a2" + "a1")
if a3==0:
print ("a2" + "a1")
它給出的錯誤是沒有定義c1和a1。
再次感謝!
更改
#Convert to integers from strings
int(x1)
int(x2)
int(y1)
int(y2)
至
#Convert to integers from strings
x1 = int(x1)
x2 = int(x2)
y1 = int(y1)
y2 = int(y2)
你還沒有定義a3
:
#Digit 3 of answer
c2=a3
如果要打印變量的值(可能必須使用str()將它們轉換為字符串),請使用
if a3==1:
print (a3 + " " + a2 + " " + a3)
if a3==0:
print (a2 + " " + a1)
如果要添加變量,請使用:
if a3==1:
print (a3 + a2 + a1)
if a3==0:
print (a2 + a1)
代替
if a3==1:
print ("a3" + "a2" + "a1")
if a3==0:
print ("a2" + "a1")
python中有幾種方法可以添加兩個二進制數並打印它們。 以下是方法。 (但我會在下面解釋你的問題)
方法1:
number1=input("Enter 1st Binary Number:")
number2=input("Enter 2nd Binary Number:")
num1 =int(number1,2) //Convert string to binary number **NOTE:** int('string',base) is the format
num2 = int(number2,2)
bin_num = bin(num1+num2)
print(bin_num)
print(str(bin_num)[2:] #just to remove the '0b'
輸出:
Enter 1st Binary Number:10
Enter 2nd Binary Number:01
0b11
11
方法2:
number1=input("Enter 1st Binary Number:")
number2=input("Enter 2nd Binary Number:")
num1 =int(number1,2)
num2 = int(number2,2)
print("{0:b}".format(num1+num2))
輸出:
Enter 1st Binary Number:10
Enter 2nd Binary Number:01
0b11
11
你的問題:
您可以在程序的頂部聲明它們,然后使用它們。
此外 ,你還有一件事錯了,
int(x1)
int(x2)
int(y1)
int(y2)
這四條線什么都不做。 您沒有更改x1,x2,y1,y2中的值,只是調用int()
它們而不修改它們。 這樣做,
x1=int(x1)
x2=int(x2)
x3=int(y1)
x4=int(y2)
完整代碼:
a1=c1=a2=c2=a3=c3=0 #Declare and define them all `0`s at top
#Enter numbers and define variables
number1=input("Enter 1st Binary Number:")
number2=input("Enter 2nd Binary Number:")
x1 = number1[0]
x2 = number1[1]
y1 = number2[0]
y2 = number2[1]
#Convert to integers from strings
x1=int(x1)
x2=int(x2)
x3=int(y1)
x4=int(y2)
#Digit 1 of answer and digit to be carried
if x1+y1==0:
a1 = 0
c1 = 0
if x1+y1==1:
a1 = 1
c1 = 0
if x1+y1==2:
a1 = 0
c1 = 1
#Digit 2 of answer and digit to be carried
if x2+y2+c1==0:
a2=0
c2=0
if x2+y2+c1==1:
a2=1
c2=0
if x2+y2+c1==2:
a2=0
c2=1
if x2+y2+c1==3:
a2=1
c2=1
#Digit 3 of answer
c2=a3
if a3==1:
print (a3 , a2, a1,sep='')
if a3==0:
print (a2 , a1,sep='')
最后,最后一行不會打印a1
, a2
的值,而只會打印字符串。 所以刪除 雙引號 。
注意:我給了一個額外的參數sep=''
沒有它你的輸出之間會有空格。 喜歡,
1 1
在sep=''
你會得到
11
我將建議添加兩個二進制數的簡單代碼。
number1 = str(input("Enter 1st Binary Number"))
number2 = str(input("Enter 2nd Binary Number"))
intSum = int(number1, 2) + int(number2, 2) #int() takes first argument as string
result = bin(intSum)[2:] #remove 0b
print result
產量
Enter 1st Binary Number1111
Enter 2nd Binary Number1010
11001
其他答案都是正確的。 但是很少有其他觀點。
1.您可以將轉換結合到整數和分配一步。 喜歡:
x1 = int(number1[0])
x2 = int(number1[1])
y1 = int(number2[0])
y2 = int(number2[1])
2.使用相同的變量集進行多個條件檢查時,如果它沒有損害你的邏輯,那么使用elif
是個好主意。 在你的情況下:
#Digit 1 of answer and digit to be carried
if x1+y1==0:
a1 = 0
c1 = 0
elif x1+y1==1:
a1 = 1
c1 = 0
elif x1+y1==2:
a1 = 0
c1 = 1
因為, x1+y1==0
, x1+y1==1
, x1+y1==2
不會同時為真。 類似地,它也可以應用於答案的數字2。
3.預分配可以減少行數。
a1 = c1 = 0
然后你的數字1塊看起來像:
#Digit 1 of answer and digit to be carried
if x1+y1==1:
a1 = 1
elif x1+y1==2:
c1 = 1
在這里,我刪除了對x1+y1==0
的檢查,因為默認情況下a1
和c1
為0
。 而對於其他無效案例,您必須制作另一個條件語句。 數字2塊也可以類似地修改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.