Есть функция, которая принимает аргумент в виде строки, состоящей из "А", "а", "Б" и "б".
Каждая "Б" должна быть заменена на "А", каждая "А" на "Б" и так же с нижним регистром.
Пример:
>> swap('ААббББаа')
'ББааААбб'
Написал такой слабенький код, но рабочий:
def swap(text):
new_text = []
for c in text:
if c == 'а':
new_text.append('б')
elif c == 'б':
new_text.append('а')
elif c == 'А':
new_text.append('Б')
elif c == 'Б':
new_text.append('А')
return ''.join(new_text)
Вопрос: как можно решить эту задачу по другому? Чтобы код был короче и/или быстрее.
Ответ
Если важна скорость обработки, то рекомендую воспользоваться translate
trantab = str.maketrans('АБаб', 'БАба')
text = 'ААббББаа'
print(text.translate(trantab))
Результат:
ББааААбб
Комментариев нет:
Отправить комментарий