Программа для отзеркаливания слов в строке, если программе дать строку с 2 пробелами между словами она выдает строку с 1 пробелом
def reverse_words(text):
text = text[::-1]
text_lst = text.split()
text_lst.reverse()
b = " ".join(text_lst)
return b
Ответы (2 шт):
Автор решения: DD_N0p
→ Ссылка
Для переворачивания строки достаточно :
def reverse_words(text):
return text[::-1]
print(reverse_words('кoт собака кот собака'))
В вашем примере вы переворачиваете строку, разбиваете эту строку на элементы массива, тем самым все пробелы исходной строки удаляются, а с помощью join вы добавляете только по одному пробелу.
Автор решения: Namerek
→ Ссылка
Дело было вечером, делать было нечего. И так, "фантазия на тему":
import re
from itertools import zip_longest
line = 'Программа для отзеркаливания слов и строк'
def words_flip(text: str, flip_words: bool = False, flip_line: bool = False):
spaces = re.findall(r'\s+', text)
words = re.findall(r'\S+', text)
if flip_line:
spaces.reverse()
words.reverse()
new_line_list = [
(word[::-1] if flip_words else word) + (space if space else '') for word, space in zip_longest(words, spaces)
]
new_line = ''.join(new_line_list)
print(new_line)
if __name__ == '__main__':
words_flip(line, flip_words=True, flip_line=True)