Cześć,
Zaczynam dopiero naukę pythona i dostaliśmy na studiach zadanie z sumowania liczb binarny (treść zadania poniżej). Nie bardzo wiem gdzie w moim kodzie jest błąd :( Z góry bardzo dziękuję za każdą pomoc :)
Dane są dwie liczby zapisane w postaci binarnej. Oblicz ich sumę, a wynik podaj również w postaci binarnej.
Wejście
W pierwszej linii wejścia znajduje się jedna liczba całkowita d (1 <= d <= 100), która oznacza liczbę zestawów danych.
Każdy zestaw składa się z czterech linii. W pierwszej z nich znajduje się liczba bitów n (1<=n<=10000), na których zapisana jest pierwsza liczba.
Druga linia zawiera n oddzielonych spacjami cyfr: zer lub jedynek, tworzących reprezentację binarną pierwszej liczby.
W trzeciej linii znajduje się liczba bitów m (1<=m<=10000), na których zapisana jest druga liczba.
Czwarta linia zawiera m oddzielonych spacjami cyfr: zer lub jedynek, które tworzą reprezentację binarną drugiej liczby.
W zapisie liczb nie ma zer wiodących, tzn. pierwszy bit każdej liczby jest równy 1, chyba że cała liczba jest równa 0 (jeden bit równy 0).
Wyjście
Na wyjściu należy dla każdego zestawu danych wypisać ciąg zer i jedynek (bez spacji), będący zapisem binarnym sumy liczb podanych na wejściu.
Przykład
Wejście:
2
4
1 0 0 1
2
1 1
4
1 1 1 1
6
1 1 1 1 1 1
Wyjście:
1100
1001110
Kod:
ilosc = int(input())
dlugosc1 = int(input())
tab1 = [int(x) for x in input().split()]
dlugosc2 = int(input())
tab2 = [int(x) for x in input().split()]
wynik = []
for j in range (ilosc):
if dlugosc2 > dlugosc1:
for i in range (dlugosc2, 0):
wynik[i] = (tab1[i] + tab2[i] + reszta)%2,
if (tab1[i] + tab2[i] + reszta)>= 2:
reszta = 1
else:
reszta = 0
else:
for i in range (dlugosc1, 0):
wynik[i] = (tab1[i] + tab2[i] + reszta)%2,
if (tab1[i] + tab2[i] + reszta)>= 2:
reszta = 1
else:
reszta = 0
print(*wynik)