В настоящее время я занимаюсь проблемой 4kyu в Codewars, где, учитывая строку и список символов, ваша функция должна удалять символы в строке и любые другие символы, которые следуют за ней, до конца строки. Я придумал решение, которое, как мне кажется, должно работать. Поскольку мне нужно удалить каждый символ в строке после нахождения специального символа, я разделяю строку на '\ n', так как это отмечает конец строки. Затем я приступил к написанию функции, которая проверяет все подстроки:
def solution(string,markers):
str_arr = string.split('\n')
print(str_arr)
new_str = []
for substring in str_arr:
count = 0
for mark in markers:
if mark in substring:
count +=1
if count == 0:
new_str.append(substring)
for char in substring:
if char in markers:
sbstr = substring[:substring.index(char)-1]
new_str.append(sbstr.strip())
if str_arr.index(substring) == len(str_arr)-1:
break
print(new_str)
solution = '\n'.join(new_str)
return solution
Сначала я проверяю, есть ли в подстроке маркер, а если нет, я добавляю его в новый список. Это решение работает для большинства тестов, предоставляемых Codewars, но по какой-то причине есть тесты, которые эта функция просто не может решить. Один из них:
Тестирование решения ("! Яблоки бананы бананы яблоки - \ nарбузы '\ npears вишни апельсины ^ яблоки \ nчерри арбузы клубника бананы клубника", [' @ ',', ',' = ',' - ', "'", '!'])
, где мой вывод:
Он также должен работать со случайными входами: '! яблоки бананы бананы яблоки \ n! яблоки бананы бананы яблоки \ nарбузы \ nарбузы вишни апельсины ^ яблоки \ nчерри арбузы клубника бананы клубника 'должны быть равны' \ nарбузам \ npears вишни апельсины ^ яблоки \ nчерри арбузы клубника бананы клубника '
В настоящее время я не знаю как решить эти проблемы, тем более что функция отлично работает примерно в 40/48 случаях. Спасибо за любые предложения о том, как я могу улучшить свой код.