rootovich1
@rootovich1

Почему не работает алгоритм?

У меня есть 2 массива. В каждом по 8 элементов массива. Каждый элемент массива может принимать 0 или 1.
В зависимости от значений элементов массивов вычисляется значение , которое присваивается в третий массив , по формуле:

1100
0101
------
1010

print(otket_1_for_ip_bit_new)   # ['0', '0', '0', '0', '0', '0', '1', '0']
print(otket_1_for_mask_bit_new) # ['1', '1', '1', '1', '1', '1', '1', '1']

print('')

wildcard = []

def wildcardmasc(x, y):
    for i in range(8): 
        if x[i] < y[i]: 
            wildcard.append("0") 
        elif x[i] > y[i]: 
            wildcard.append("1") 
        else:
            if x[i] == 1:
                wildcard.append("0")
            else:
                wildcard.append("1")
    print(wildcard) #['0', '0', '0', '0', '0', '0', '1', '0']

wildcardmasc(otket_1_for_ip_bit_new, otket_1_for_mask_bit_new)


Вывод:
['0', '0', '0', '0', '0', '0', '1', '0']
['1', '1', '1', '1', '1', '1', '1', '1']

['0', '0', '0', '0', '0', '0', '1', '0']

Где я допустил ошибку ?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
NeiroNx
@NeiroNx
Программист
Ошибка в сравнениии:
if x[i] == 1:
должно быть
if x[i] == '1':
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@kisaa
Вы меня простите, но у вас или формула в условии неверна, или вы что-то не заметили. В случае, если у вас только '0' и '1' (т.е. логические значения), то третий массив не зависит от первого вообще, а является инвертированным вторым: z[i] = not y[i]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы