Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/64: Рейтинг темы: голосов - 64, средняя оценка - 4.61
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431

Изменить в тексте порядок следования букв|слов|предложений

14.02.2016, 21:14. Показов 12826. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
#Изменить в тексте порядок следования:
#- букв в словах;
#- слов в предложениях;
#- предложений в тексте.
#Вывести модифицированный текст.
Python
1
2
3
4
5
s = input()
s = s.split()
s.reverse()
for i in s:
    print(i, end=' ')
Дальше этого в тупике...help!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.02.2016, 21:14
Ответы с готовыми решениями:

Изменить порядок следования на обратный для всех символов строки
Программе на вход (в стандартный поток ввода) подаётся целые числа L, R и строка S, состоящая из строчных английских букв. Выведите в...

Элементы в новом массиве упорядочены по убыванию или по возрастанию? Если да, то изменить порядок следования элементов
Задача: Даны 2 целочисленные последовательности a и b размером n. Записать в новый массив элементы из a, которые отсутствуют в массиве b,...

Изменить порядок следования слов в тексте на противоположный
1) Реализовать функцию: int calcWordsCount(const char *text, const char *word, int startFrom = 0); которая подсчитывает...

9
30 / 30 / 22
Регистрация: 13.02.2016
Сообщений: 131
14.02.2016, 21:43
Python
1
print(''.join([x for x in list(input())[-1::-1]]))
Так?
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
14.02.2016, 22:03
Надо смотреть текст. Чем разделены предложения?
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
14.02.2016, 22:24
Цитата Сообщение от Whost Посмотреть сообщение
print(''.join([x for x in list(input())[-1::-1]]))
Это Вы так хитро завуалировали
Python
1
print(input()[::-1])
1
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431
16.02.2016, 00:48  [ТС]
Ребята, только начинаю учить, многое не понятно...
Python
1
print(''.join([x for x in list(input())[-1::-1]]))
пока не знаю что это....
мой код слова меняет в предложении, вроде как....предложение? к примеру:"My name is Bob. I live in London"
0
 Аватар для YakobsEA
268 / 96 / 75
Регистрация: 04.12.2015
Сообщений: 369
Записей в блоге: 1
17.02.2016, 05:32
Лучший ответ Сообщение было отмечено izuchaju_python как решение

Решение

Много уже воды утекло, может уже и поздно, но что-то заморочился я вчера (по камчатскому времени) этой задачей... В результате получилась чуть ли не статья. В общем смотрите:

Всё-таки знаки окончания предложения наверно должны идти в конце предложения.
Принял для себя следующие ограничения по тексту:
1) все предложения завершаются на занки [.!?];
2) предложения не завершаются на "...", "!..", "???" и пр.;
3) в тексте нет пробелов, расположенных друг за другом.
Оттолкнувшись от этих предпосылок написал вот такой скрипт (izuchaju_python, привожу его специально для Вас - он проще всего для понимания и всё ниже следующее - это интерпретации именно этого алгоритма):

Python
1
2
3
4
5
6
7
8
9
10
11
12
# ВАРИАНТ 1
import re
data1 = input()
data2 = (re.split(r'[.!?] |[.!?]$', data1))
data2.remove('')    # Не успел найти подходящее рег. выр-е, не дающее в конце пустую сроку 
data3 = (re.findall(r'[.!?] |[.!?]$', data1))
 
print('Исходная строка: ', data1)
data1 = ''
for i in range(len(data2)):
    data1 = data1 + ((data2[::-1])[i])[::-1] + (data3[::-1])[i] + (' ' if i == 0 else '')
print('Трансформированная строка: ', data1)
Посмотрел, порадовался немного. Потом думаю, засмеют - сильно много букв... И переменных. Ещё посидел и родил следующее

Python
1
2
3
4
5
6
7
8
# ВАРИАНТ 2
import re
data = input()
print('Исходная строка: ', data, '\nТрансформированная строка: ', end='')
for i in range(len(re.split(r'[.!?] |[.!?]$', data)) - 1):
    print((((re.split(r'[.!?] |[.!?]$', data))[::-1])[i+1])[::-1] +
        ((re.findall(r'[.!?] |[.!?]$', data))[::-1])[i] +
        (' ' if i == 0 else ''), end='')
Ну вот. Теперь программа в 4 строки написана и с одной переменной. Хорошо... только не оптимально с точки зрения быстродействия (многократные операции с регулярными выражениями в цикле...) - плохо.
Подумал так и вернулся к первому варианту, модифицировав его сначала так:

Python
1
2
3
4
5
6
7
8
9
10
# ВАРИАНТ 3
import re
data1 = input()
data2 = list(zip(re.split(r'[.!?] |[.!?]$', data1, len(re.split(r'[.!?] |[.!?]$', data1)) - 1), (re.findall(r'[.!?] |[.!?]$', data1)))) # Отделение знаков препинания от предложений
 
print('Исходная строка: ', data1)
data1 = ''
for i in range(len(data2)):  # Объединение перевёрнутых предложений с не перевёрнутыми знаками препинания
    data1 += ((data2[::-1])[i][0][::-1]) + (data2[::-1])[i][1] + (' ' if i == 0 else '')
print('Трансформированная строка: ', data1)
А потом вот так:

Python
1
2
3
4
5
6
7
8
# ВАРИАНТ 4
import re
data1 = input()
data2 = list(zip(re.split(r'[.!?] |[.!?]$', data1, len(re.split(r'[.!?] |[.!?]$', data1)) - 1), (re.findall(r'[.!?] |[.!?]$', data1)))) # Отделение знаков препинания от предложений
 
print('Исходная строка: ', data1, '\nТрансформированная строка: ', end = '')
for i in range(len(data2)):  # Объединение перевёрнутых предложений с не перевёрнутыми знаками препинания
    print(((data2[::-1])[i][0][::-1]) + (data2[::-1])[i][1] + (' ' if i == 0 else ''), end = '')
Потом подумал и решил попробовать сократить количество переменных до одной, хотя где-то читал, что не рекомендуется таким увлекаться. Видимо из соображений минимизации вероятности ошибки из-за непонимания деталей обработки данных в модуле...
Тем не менее сработало корректно:

Python
1
2
3
4
5
6
7
8
# ВАРИАНТ 5
import re
data = input()
data = list(zip(re.split(r'[.!?] |[.!?]$', data, len(re.split(r'[.!?] |[.!?]$', data)) - 1), (re.findall(r'[.!?] |[.!?]$', data)))) # Отделение знаков препинания от предложений
 
print('Исходная строка: ', data, '\nТрансформированная строка: ', end = '')
for i in range(len(data)):  # Объединение перевёрнутых предложений с не перевёрнутыми знаками препинания
    print(((data[::-1])[i][0][::-1]) + (data[::-1])[i][1] + (' ' if i == 0 else ''), end = '')
Вот на этом моя фантазия иссякла.
Думаю, что из всего описанного третий вариант самый приспособленный к реальной жизни, когда над данными нужно выполнять какие-то следующие операции.
Вот, как бы вот... Не судите строго, помните, что я тоже делаю лишь первые питонские... поползновения?

Добавлено через 3 минуты
Ну и рекомендации по длинам строки не выдержаны, конечно. Что-то забыл про это совсем.
2
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
17.02.2016, 13:28
Python
1
' '.join(reversed(re.findall(r'\w[^.!?]+[.!?]', data)))
— получите все предложения в обратном порядке.
Python
1
print(*(s[-2::-1] + s[-1] for s in reversed(re.findall('\w[^.!?]+[.!?]', data))))
— буквы, слова и предложения в обратном порядке
0
20 / 21 / 6
Регистрация: 30.06.2015
Сообщений: 431
18.02.2016, 15:22  [ТС]
Всем ОГРОМНОЕ спасибо! будем учить, разбираться.
0
 Аватар для YakobsEA
268 / 96 / 75
Регистрация: 04.12.2015
Сообщений: 369
Записей в блоге: 1
19.02.2016, 00:57
Marinero, Вы как всегда на высоте. Опыт... Не учли только одной детали:
"123 qwe. 123.23 это число!"
А ещё мы все дружно забили на запятые. Ну будем считать, что это специально для упрощения.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
19.02.2016, 01:37
Цитата Сообщение от YakobsEA Посмотреть сообщение
Не учли только одной детали:
Цитата Сообщение от Marinero Посмотреть сообщение
Чем разделены предложения?
Цитата Сообщение от YakobsEA Посмотреть сообщение
все предложения завершаются на занки [.!?];
Python
1
r'((?:\w[^.!?]+[.!?])+?)(?!\d)'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2016, 01:37
Помогаю со студенческими работами здесь

Изменить порядок следования букв на обратный
Разработать программу для обработки текстовой информации . Консольный интерфейс программы должен выполнять функции ввода исходной...

Изменить порядок следования слов в строке на обратный
Помогите пожалуйста, рреобразовать строку, изменив порядок следования слов в строке на обратный.Функциями, объявленными в string.h не...

Изменить порядок следования слов в строке на обратный
Помогите, пожалуйста, написать функцию, которая изменяет порядок следования слов в строке на обратный

В строке изменить порядок следования слов на инверсный с макросами
Не знаю как реализовать через макросы. Задание: В исходной строке изменить порядок следования слов на инверсный с макросами.

Вывести Имя и Фамилию (изменить порядок следования слов) через один пробел
Дана строка, в которой записаны Фамилия и Имя ученика через пробел или несколько пробелов. Вывести Имя и Фамилию (изменить порядок...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru