Próbuję dodać dwie liczby binarne w Pythonie za pomocą prostego kodu. Czy ktoś może mi powiedzieć, dlaczego to nie działa? Dzięki wielkie! Próbowałem zerwać kod, ale kiedy go złamałem, wszystko działa osobno. Ale oczywiście, kiedy to robię, nie działa.

Jestem początkującym w Pythonie, więc wyjaśnienia z pewnością zostaną docenione. Dzięki za pomoc!

#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")

Błąd, który daje, jest to, że C1 i A1 nie są zdefiniowane.

Dzięki jeszcze raz!

1
C. Swan 28 czerwiec 2017, 07:14

4 odpowiedzi

Najlepsza odpowiedź

Zmiana

#Convert to integers from strings
int(x1)
int(x2)
int(y1)
int(y2)

Do

#Convert to integers from strings
x1 = int(x1)
x2 = int(x2)
y1 = int(y1)
y2 = int(y2)

Również nie zdefiniowałeś a3:

#Digit 3 of answer
c2=a3

Jeśli chcesz wydrukować wartość zmiennych (może być konieczne przekonwertowanie ich do ciągów za pomocą str ()), użyj

if a3==1:
  print (a3 + " " + a2 + " " + a3)

if a3==0:
  print (a2 + " " + a1)

Jeśli chcesz dodać zmienne, użyj:

if a3==1:
  print (a3 + a2 + a1)

if a3==0:
  print (a2 + a1)

Zamiast

if a3==1:
  print ("a3" + "a2" + "a1")

if a3==0:
  print ("a2" + "a1")
1
hridayns 28 czerwiec 2017, 04:22

Każda inna odpowiedzi są poprawne. Niewiele innych punktów.

1. Możesz łączyć konwersję na całkowitą i przypisanie na jednym kroku. Lubić:

x1 = int(number1[0])
x2 = int(number1[1])
y1 = int(number2[0])
y2 = int(number2[1])

2. Podczas wykonywania wielu warunkowych kontroli z tym samym zestawem zmiennym, to dobry pomysł, aby użyć elif, jeśli nie jest uszkodzony logiki. W Twoim przypadku:

#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

Ponieważ x1+y1==0, x1+y1==1, x1+y1==2 nie będzie prawdziwym jednocześnie. Podobnie można zastosować do cyfry 2 również odpowiedzi.

3. Liczba linii może być zmniejszona z wstępnie przypisaniem.

a1 = c1 = 0

Następnie twój cyfry 1 blok będzie wyglądał:

#Digit 1 of answer and digit to be carried
if x1+y1==1:
  a1 = 1
elif x1+y1==2:
  c1 = 1

Tutaj usunęłam sprawdzanie x1+y1==0, ponieważ domyślnie a1 i c10. I dla innych nieprawidłowych przypadków musisz wykonać kolejne oświadczenie warunkowe. Digit 2 blok może być również modyfikowany podobnie.

0
RatDon 28 czerwiec 2017, 04:46

W Pythonie jest kilka sposobów, aby dodać dwie liczby binarne i wydrukować. Poniżej znajdują się metody. (Jednak wyjaśnię twój problem poniżej)

METODA 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'

Wynik:

Enter 1st Binary Number:10
Enter 2nd Binary Number:01
0b11
11

METODA 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))

Wynik:

Enter 1st Binary Number:10
Enter 2nd Binary Number:01
0b11
11

Twój problem:

Możesz zadeklarować je na szczycie swojego programu, a następnie użyć ich.

Również Masz coś złego,

int(x1)
int(x2)
int(y1)
int(y2)

Te cztery linie nic nie robią. Nie zmieniasz wartości w X1, X2, Y1, Y2 po prostu dzwonisz int() ich bez ich modyfikacji. Zamiast tego zamiast tego

x1=int(x1)
x2=int(x2)
x3=int(y1)
x4=int(y2)

Kompletny kod:

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='')

I wreszcie ostatnie linie nie wydrukują wartości a1, a2 zamiast tego wydrukuje ciągi. Więc usuń podwójne cytaty .

Uwaga: Dostałem dodatkowy parametr sep='' bez jego wyjścia będzie miała spacje między nimi. Lubić,

1 1

Po sep='' otrzymasz

11
1
void 28 czerwiec 2017, 06:46

Zaproponuję prosty kod, aby dodać dwie liczby binarne.

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

Wynik

Enter 1st Binary Number1111
Enter 2nd Binary Number1010
11001
3
Supratim Samantray 28 czerwiec 2017, 06:18