#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