замените цифры строки на другие

#python #string #loops

Вопрос:

я немного застрял с этой проблемой

У меня есть строка только с 1 и 0, я пытаюсь превратить каждое » 0 » в «10», а каждое » 1 » в «01».

Я не заинтересован в использовании функции replace()

Я пробовал это,но это меняет только » 1 » на «01», я не знаю, почему » 0 » не меняется, кто-нибудь знает, почему? Спасибо!

 mystring='010101'

for i in mystring:
    if(i=='0'):
        i=='01'
    else:
        i='10'
    print(i)  
 

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

1. Вы повторяете строку с переменной i и заменяете ту же переменную

Ответ №1:

Проблема

Вот код, который вы используете:

 mystring='010101'

for i in mystring:
    if(i=='0'):
        i=='01' # This is a comparing operator and this returns false but as you havnt given the variable where it should store the false value. And so I remains unchanged.
    else:
        i='10'
    print(i)  
 

Решение

Это связано с тем, что вы используете операторы сравнения вместо назначения операторов.

 mystring = "010101"

for i in mystring:
    if i == "0":
        i = "01" # Use assignment operators instead of comparing operators
    else:
        i = "10"
    print(i)

 

Ответ №2:

Мы могли бы использовать re.sub здесь функцию обратного вызова:

 mystring = '010101'
output = re.sub(r'[01]', lambda m: '10' if m.group() == '0' else '01', mystring)
print(output)  # 100110011001