У меня вопрос о некотором фрагменте кода. Я выполнял упражнение в python о строках. Я придумал правильную логику, но по какой-то причине вывод внутри цикла for не возвращается правильно. Вместо этого возвращается глобальное значение. Я не слишком хорошо знаком с Python, но есть ли способ исправить это?Удалить повторяющиеся пробелы вручную в строке
def song_decoder(song):
global Ret
Ret = ""
Ret = song.replace("WUB", " ")
Ret = Ret.strip()
Ret += "1"
space = False
for i in range(0, len(Ret)):
if Ret[i] == "1":
Ret = Ret[:i]
break
elif Ret[i] == " ":
if space is False:
space = True
else:
if i+1 == len(Ret):
Ret = Ret[:i]
else:
Ret = Ret[:i] + Ret[(i+1):]
else:
space = False
return Ret
код теста:
def test_song_decoder(self):
self.assertEquals(song_decoder("AWUBBWUBC"), "A B C","WUB should be replaced by 1 space")
self.assertEquals(song_decoder("AWUBWUBWUBBWUBWUBWUBC"), "A B C","multiples WUB should be replaced by only 1 space")
self.assertEquals(song_decoder("WUBAWUBBWUBCWUB"), "A B C","heading or trailing spaces should be removed")
Второй тест не пройден, и 'A B C'
вместо этого возвращается.
Почему вы используете глобальный? –
Просто чтобы убедиться, что эта песня не проблема. Я думал, что это может решить проблему, но это не так. – Kharrid
Что вы на самом деле пытаетесь сделать? –