Написание функции, которая преобразует 0 в 1 и наоборот. Программа работает или не работает в зависимости от того, использую ли я = или ==

#python #string #for-loop #binary

#python #строка #for-цикл #двоичный

Вопрос:

 def flip_b(binary):
    b_string = ""
    for i in range(len(binary)):
        if binary[i] == '1':
            b_string  = '0' # If I set the  = to == the function doesn't work
        else:
            b_string  = '1'
    return b_string
  

В чем разница между = и == здесь?

Комментарии:

1. == не является присваиванием.

Ответ №1:

== для сравнения

 >>> 5 == 4
False
>>> 4 == 4
True
  

= является сокращением для x = x y , поэтому

 >>> x = 5
5
>>> x = x   5
10
>>> x = 5
5
>>> x  = 5
10
  

Комментарии:

1. Я думаю, было бы более полезно, если бы вы показали конкатенацию, а не сложение, чтобы соответствовать тому, что есть в коде в вопросе.

Ответ №2:

Оператор = — это просто сложная сумма между двумя значениями или, в данном случае, конкатенация строк.

b_string = «0» — это то же самое, что и b_string = b_string «0» .

Оператор == — это совершенно другая и не связанная вещь: он используется для проверки равенства двух значений. Она всегда выдает значение True или False .

В вашем случае ваш код начинается с создания пустой строки, затем выполняется итерация по списку с помощью цикла for, для каждого элемента в списке проверяется, является ли он «1» или «0» (отсюда оператор ==) и добавляет к пустой строке противоположный символ (отсюда =) . После итерации по всему списку вы получаете целую строку с перевернутыми 1 и 0.